source: spip-zone/_plugins_/rainette/trunk/inc/rainette_debusquer.php @ 100498

Last change on this file since 100498 was 100498, checked in by brunobergot@…, 3 years ago

version 3.0.12 : fix fonction dbg_afficher_tableau() pour tonton

  • Property svn:eol-style set to native
File size: 6.6 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6
7if (!defined('_RAINETTE_DEBUG')) {
8        define('_RAINETTE_DEBUG', false);
9}
10
11
12/**
13 * @param string $lieu
14 * @param string $mode
15 * @param int    $periodicite
16 * @param string $service
17 *
18 * @return string
19 */
20function rainette_dbg_afficher_cache($lieu, $mode = 'previsions', $service = 'weather') {
21        $debug = '';
22
23        // Recuperation du tableau des conditions courantes
24        if (_RAINETTE_DEBUG) {
25                // Si on est en mode prévisions, on impose la périodicité à la valeur par défaut pour le service
26                $periodicite = 0;
27                if ($mode == 'previsions') {
28                        include_spip("services/${service}");
29                        $configurer = "${service}_service2configuration";
30                        $configuration = $configurer($mode);
31                        $periodicite = $configuration['periodicite_defaut'];
32                }
33                // Chargement du cache
34                $charger = charger_fonction('charger_meteo', 'inc');
35                $nom_cache = $charger($lieu, $mode, $periodicite, $service);
36                if ($nom_cache) {
37                        $contenu = '';
38                        lire_fichier($nom_cache, $contenu);
39                        $tableau = unserialize($contenu);
40                        // Pour le mode prévisions, on supprime tous les jours postérieur au lendemain pour éviter d'avoir un
41                        // affichage trop conséquent.
42                        if ($mode == 'previsions') {
43                                foreach ($tableau['donnees'] as $_jour => $_valeurs) {
44                                        if ($_jour != 1) {
45                                                unset($tableau['donnees'][$_jour]);
46                                        }
47                                }
48                        }
49                        $debug = dbg_afficher_tableau(serialize($tableau));
50                }
51        }
52
53        return $debug;
54}
55
56
57/**
58 * @param string $mode
59 * @param array  $jeu
60 *
61 * @return array
62 */
63function rainette_dbg_comparer_services($mode = 'conditions', $jeu = array()) {
64        $debug = array();
65
66        if (!$mode) {
67                $mode = 'conditions';
68        }
69
70        // On acquiert la structure exact des tableaux de données standard
71        include_spip('inc/rainette_normaliser');
72        $config_donnees = $GLOBALS['rainette_config'][$mode];
73
74        if ($config_donnees) {
75                if (!$jeu) {
76                        $jeu = array(
77                                'weather'      => 'FRXX0076',
78                                'owm'          => 'Paris,Fr',
79                                'wwo'          => 'Paris,France',
80                                'wunderground' => 'Paris,France'
81                        );
82                }
83
84                // On boucle sur chaque jeu de demo
85                include_spip('inc/utils');
86                $periodicite = 0;
87                foreach ($jeu as $_service => $_lieu) {
88                        // Si on est en mode prévisions, on impose la périodicité à la valeur par défaut pour le service
89                        if ($mode == 'previsions') {
90                                include_spip("services/${_service}");
91                                $configurer = "${_service}_service2configuration";
92                                $configuration = $configurer($mode);
93                                $periodicite = $configuration['periodicite_defaut'];
94                        }
95
96                        // Chargement des données
97                        $charger = charger_fonction('charger_meteo', 'inc');
98                        $nom_cache = $charger($_lieu, $mode, $periodicite, $_service);
99                        lire_fichier($nom_cache, $contenu_cache);
100                        $tableau = unserialize($contenu_cache);
101
102                        if (!$tableau['extras']['erreur']) {
103                                // Suivant le mode on extrait les données à afficher. Pour le mode prévisions, on choisit le
104                                // jour suivant le jour courant et pour les données heures l'index 0 qui existe toujours.
105                                // En outre, il faut tenir compte pour les prévisions qu'il existe des données "jour" et
106                                // des données "heure" alors que pour les autres modes ll n'existe que des données "jour".
107                                $tableau_jour = ($mode == 'previsions') ? $tableau['donnees'][1] : $tableau['donnees'];
108                                foreach ($config_donnees as $_donnee => $_config) {
109                                        // On détermine la valeur et le type PHP de la données dans le tableau standard et
110                                        // on stocke les informations de configuration rangement pour les prévisions
111                                        if (isset($_config['rangement']) and ($_config['rangement'] == 'heure')) {
112                                                $valeur = $tableau_jour['heure'][0][$_donnee];
113                                                $type_php = gettype($tableau_jour['heure'][0][$_donnee]);
114                                                $rangement = $_config['rangement'];
115                                        } else {
116                                                $valeur = $tableau_jour[$_donnee];
117                                                $type_php = gettype($tableau_jour[$_donnee]);
118                                                $rangement = '';
119                                        }
120
121                                        // On construit le tableau de debug
122                                        $debug[$_donnee][$_service]['valeur'] = $valeur;
123                                        if (($_donnee == 'icon_meteo') and tester_url_absolue($valeur)) {
124                                                $debug[$_donnee][$_service]['valeur'] = dirname($valeur) . '/<br />' . basename($valeur);
125                                        }
126                                        $debug[$_donnee][$_service]['type_php'] = $type_php;
127                                        $debug[$_donnee][$_service]['rangement'] = $rangement;
128                                        $debug[$_donnee][$_service]['groupe'] = $_config['groupe'];
129                                        $debug[$_donnee][$_service]['type_unite'] = $_config['type_unite'];
130                                        if ($_donnee != 'erreur') {
131                                                $debug[$_donnee][$_service]['erreur'] = ($type_php === 'NULL') ? 'nonapi' : ($valeur === '' ? 'erreur' : '');
132                                        } else {
133                                                $debug[$_donnee][$_service]['erreur'] = $valeur ? 'erreur' : '';
134                                        }
135                                }
136                        }
137                }
138        }
139
140        return $debug;
141}
142
143
144/**
145 * @param string $donnee
146 * @param mixed  $valeur
147 * @param string $type_php
148 * @param string $type_unite
149 * @param string $service
150 *
151 * @return string
152 */
153function rainette_dbg_afficher_donnee($donnee, $valeur, $type_php, $type_unite, $service = 'weather') {
154        $texte = '';
155
156        if ($type_php === 'NULL') {
157                $texte = '<del>API</del>';
158                $type_php = 'null';
159        } elseif ($valeur === '') {
160                if ($donnee != 'erreur') {
161                        $texte = 'Indisponible';
162                } else {
163                        $texte = $valeur ? $valeur : 'Ok';
164                }
165        } elseif ($type_php === 'array') {
166                foreach ($valeur as $_cle => $_valeur) {
167                        $texte .= ($texte ? '<br />' : '') . "<strong>${_cle}</strong> : " . ((gettype($_valeur) === null) ? '<del>API</del>' : $_valeur);
168                }
169        } else {
170                $texte = $type_unite ? rainette_afficher_unite($valeur, $type_unite, -1, $service) : $valeur;
171        }
172        $texte .= "<br /><em>${type_php}</em>";
173
174        return $texte;
175}
176
177/**
178 * Une fonction récursive pour joliment afficher #ENV, #GET, #SESSION...
179 *              en squelette : [(#ENV|bel_env)], [(#GET|bel_env)], [(#SESSION|bel_env)]
180 *              ou encore [(#ARRAY{0,1, a,#SESSION, 1,#ARRAY{x,y}}|bel_env)]
181 *
182 * @param string|array $env
183 *              si une string est passée elle doit être le serialize d'un array
184 *
185 * @return string
186 *              une chaîne html affichant une <table>
187**/
188function dbg_afficher_tableau($env) {
189//      $env = str_replace(array('&quot;', '&#039;'), array('"', '\''), $env);
190        if (is_array($env_tab = @unserialize($env))) {
191                $env = $env_tab;
192        }
193        if (!is_array($env)) {
194                return '';
195        }
196        $style = " style='border:1px solid #ddd;'";
197        $res = "<table style='border-collapse:collapse;'>\n";
198        foreach ($env as $nom => $val) {
199                if (is_array($val) || is_array(@unserialize($val))) {
200                        $val = dbg_afficher_tableau($val);
201                }
202                elseif ($val === null) {
203                        $val = '<i>null</i>';
204                }
205                elseif ($val === '') {
206                        $val = "<i>''</i>";
207                }
208                else {
209                        $val = entites_html($val);
210                }
211                $res .= "<tr>\n<td$style><strong>". entites_html($nom).
212                                "&nbsp;:&nbsp;</strong></td><td$style>" .$val. "</td>\n</tr>\n";
213        }
214        $res .= "</table>";
215        return $res;
216}
Note: See TracBrowser for help on using the repository browser.