source: spip-zone/_plugins_/rainette/trunk/inc/debusquer.php @ 89627

Last change on this file since 89627 was 89627, checked in by eric@…, 6 years ago

Correction d'un bug lors du changement de système d'unité.
Il faut renouveler le cache lors de la détection d'un changement sinon on affichera des données fausses avec une unité correcte et ce jusqu'à la prochaine échéance du cache.

  • Property svn:eol-style set to native
File size: 4.8 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5if (!defined('_RAINETTE_DEBUG'))
6        define ('_RAINETTE_DEBUG', false);
7
8if (!defined('_RAINETTE_DONNEES_PREVISIONS'))
9        define('_RAINETTE_DONNEES_PREVISIONS', 'index:date:lever_soleil:coucher_soleil:vitesse_vent:angle_vent:direction_vent:temperature_max:temperature_min:
10                risque_precipitation:precipitation:humidite:pression:code_meteo:icon_meteo:desc_meteo:periode:icone:resume');
11if (!defined('_RAINETTE_DONNEES_CONDITIONS'))
12        define('_RAINETTE_DONNEES_CONDITIONS',
13                'Donn&#233;es d\'observation:derniere_maj/station
14                |Temp&#233;ratures:temperature_reelle/temperature_ressentie
15                |Donn&#233;es an&#233;mom&#233;triques:vitesse_vent/angle_vent/direction_vent
16                |Donn&#233;es atmosph&#233;riques:humidite/point_rosee/pression/tendance_pression/visibilite
17                |&#201;tats m&#233;t&#233orologiques natifs:code_meteo/icon_meteo/desc_meteo
18                |&#201;tats m&#233;t&#233orologiques calcul&#233;s:icone/resume/periode');
19if (!defined('_RAINETTE_DONNEES_INFOS'))
20        define('_RAINETTE_DONNEES_INFOS',
21                'Lieu:ville/region
22                |Coordonn&#233;es:longitude/latitude
23                |D&#233;mographie:population');
24if (!defined('_RAINETTE_DONNEES_TYPE_UNITE'))
25        define('_RAINETTE_DONNEES_TYPE_UNITE',
26                'population:population
27                |temperature:temperature_reelle,temperature_ressentie,point_rosee,temperature_max,temperature_min
28                |vitesse:vitesse_vent
29                |angle:angle_vent,longitude,latitude
30                |pourcentage:risque_precipitation,humidite
31                |pression:pression
32                |distance:visibilite
33                |precipitation:precipitation');
34
35
36function rainette_dbg_afficher_cache($lieu, $mode='previsions', $service='weather') {
37        $debug = '';
38
39        // Recuperation du tableau des conditions courantes
40        if (_RAINETTE_DEBUG AND function_exists('bel_env')) {
41                $charger = charger_fonction('charger_meteo', 'inc');
42                $nom_fichier = $charger($lieu, $mode, $service);
43                if ($nom_fichier) {
44                        $contenu = '';
45                        lire_fichier($nom_fichier, $contenu);
46                        $tableau = unserialize($contenu);
47
48                        // On ajoute le lieu, le mode et le service au contexte fourni au modele
49                        if ($mode == 'previsions') {
50                                // Pour les prévisions les informations communes sont stockées dans un index
51                                // supplémentaire en fin de tableau
52                                $index = count($tableau)-1;
53                                $tableau[$index]['lieu'] = $lieu;
54                                $tableau[$index]['mode'] = $mode;
55                                $tableau[$index]['service'] = $service;
56                        }
57                        else {
58                                $tableau['lieu'] = $lieu;
59                                $tableau['mode'] = $mode;
60                                $tableau['service'] = $service;
61                        }
62
63                        $debug = bel_env(serialize($tableau));
64                }
65        }
66
67        return $debug;
68}
69
70
71function rainette_dbg_comparer_services($mode='conditions', $jeu=array()) {
72        $debug = array();
73
74        if (!$mode)
75                $mode = 'conditions';
76
77        $donnees = constant('_RAINETTE_DONNEES_' . strtoupper($mode));
78        $donnees = explode(':', $donnees);
79
80        if ($donnees) {
81                if (!$jeu)
82                        $jeu = array(
83                                'weather' => 'FRXX0076',
84                                'owm' => 'Paris,Fr',
85                                'wwo' => 'Paris,France',
86                                'wunderground' => 'Paris,France',
87                                'yahoo' => '615702');
88
89                // Recuperation du tableau des conditions courantes
90                foreach($jeu as $_service => $_lieu) {
91                        $charger = charger_fonction('charger_meteo', 'inc');
92                        $nom_fichier = $charger($_lieu, $mode, $_service);
93                        if ($nom_fichier) {
94                                $contenu = '';
95                                lire_fichier($nom_fichier,$contenu);
96                                $tableau = unserialize($contenu);
97                                if ($tableau) {
98                                        foreach($tableau as $_donnee => $_valeur) {
99                                                $type = gettype($tableau[$_donnee]);
100                                                $debug[$_donnee][$_service]['valeur'] = $_valeur;
101                                                $debug[$_donnee][$_service]['type'] = $type;
102                                                if ($_donnee != 'erreur')
103                                                        $debug[$_donnee][$_service]['erreur'] = ($type === 'NULL') ? 'nonapi' : ($_valeur === '' ? 'erreur' : '');
104                                                else
105                                                        $debug[$_donnee][$_service]['erreur'] = $_valeur ? 'erreur' : '';
106                                        }
107                                }
108                        }
109                }
110        }
111
112        return $debug;
113}
114
115
116function rainette_dbg_afficher_donnee($donnee, $valeur, $type_php, $service='weather') {
117        static $types_unite = array();
118        $texte = '';
119
120        if (!$types_unite) {
121                $config_types = explode('|', _RAINETTE_DONNEES_TYPE_UNITE);
122                foreach ($config_types as $_config_type) {
123                        list($type, $donnees) = explode(':', trim($_config_type));
124                        foreach (explode(',', $donnees) as $_donnee) {
125                                        $types_unite[$_donnee] = $type;
126                        }
127                }
128        }
129        $type_donnee = isset($types_unite[$donnee]) ? $types_unite[$donnee] : '';
130
131        if ($type_php === 'NULL') {
132                $texte = '<del>API</del>';
133                $type_php = '';
134        }
135        elseif ($valeur === '') {
136                if ($donnee != 'erreur')
137                        $texte =  'Indisponible';
138                else {
139                        $texte = $valeur ? $valeur : 'Ok';
140                }
141        }
142        elseif ($type_php === 'array') {
143                foreach ($valeur as $_cle => $_valeur) {
144                        $texte .= ($texte ? '<br />' : '') . "<strong>${_cle}</strong> : " . ((gettype($_valeur) === NULL) ? '<del>API</del>' : $_valeur);
145                }
146        }
147        else {
148                        $texte = $type_donnee ? rainette_afficher_unite($valeur, $type_donnee, -1, $service) : $valeur;
149        }
150        $texte .= "<br /><em>${type_php}</em>";
151
152        return $texte;
153}
154
155?>
Note: See TracBrowser for help on using the repository browser.