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

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

Fin de la mise au point du service weatherbit.io et refactoring complet de la configuration des services. Pour la peine un up de y.

  • Property svn:eol-style set to native
File size: 8.1 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6
7if (!defined('_RAINETTE_DEBUG')) {
8        /**
9         * Activation ou désactivation des traces de debug.
10         */
11        define('_RAINETTE_DEBUG', false);
12}
13if (!defined('_RAINETTE_DEBUG_CLES_PREVISIONS')) {
14        /**
15         * Clé jour par défaut utilisée pour afficher les prévisions : jour suivant.
16         */
17        define('_RAINETTE_DEBUG_CLES_PREVISIONS', '1');
18}
19
20
21/**
22 * @param string $lieu
23 * @param string $mode
24 * @param string $service
25 *
26 * @return string
27 */
28function rainette_debug_afficher_cache($lieu, $mode = 'previsions', $service = 'weather') {
29        static $cles_previsions = array();
30        $debug = '';
31
32        // Recuperation du tableau des conditions courantes
33        if (_RAINETTE_DEBUG and function_exists('bel_env')) {
34                // Si on est en mode prévisions, on impose la périodicité à la valeur par défaut pour le service
35                $periodicite = 0;
36                if ($mode == 'previsions') {
37                        include_spip("services/${service}");
38                        $configurer = "${service}_service2configuration";
39                        $configuration = $configurer($mode);
40                        $periodicite = $configuration['periodicite_defaut'];
41                }
42                // Chargement du cache
43                $charger = charger_fonction('meteo_charger', 'inc');
44                $nom_cache = $charger($lieu, $mode, $periodicite, $service);
45                if ($nom_cache) {
46                        $contenu = '';
47                        lire_fichier($nom_cache, $contenu);
48                        $tableau = unserialize($contenu);
49                        // Pour le mode prévisions, on supprime tous les jours postérieur au lendemain pour éviter d'avoir un
50                        // affichage trop conséquent.
51                        if ($mode == 'previsions') {
52                                // Récupérer les index de prévisions à afficher
53                                if (!$cles_previsions) {
54                                        $cles_previsions = explode(',', _RAINETTE_DEBUG_CLES_PREVISIONS);
55                                }
56                                foreach ($tableau['donnees'] as $_jour => $_valeurs) {
57                                        if (!in_array($_jour, $cles_previsions)) {
58                                                unset($tableau['donnees'][$_jour]);
59                                        }
60                                }
61                        }
62                        $debug = bel_env(serialize($tableau), true);
63                }
64        }
65
66        return $debug;
67}
68
69
70/**
71 * @param string $lieu
72 * @param string $mode
73 * @param string $service
74 *
75 * @return string
76 */
77function rainette_debug_afficher_config() {
78        $debug = '';
79
80        // Recuperation du tableau des conditions courantes
81        if (_RAINETTE_DEBUG and function_exists('bel_env')) {
82                include_spip('inc/config');
83                $execution = lire_config('rainette_execution', array());
84                $debug = bel_env(serialize($execution), true);
85        }
86
87        return $debug;
88}
89
90
91/**
92 * @param string $mode
93 * @param array  $jeu
94 *
95 * @return array
96 */
97function rainette_debug_comparer_services($mode = 'conditions', $jeu = array()) {
98        $debug = array();
99
100        if (!$mode) {
101                $mode = 'conditions';
102        }
103
104        // On acquiert la structure exact des tableaux de données standard
105        include_spip('inc/rainette_normaliser');
106        $config_donnees = $GLOBALS['rainette_config'][$mode];
107
108        if ($config_donnees) {
109                if (!$jeu) {
110                        $jeu = rainette_debug_jeu_defaut();
111                }
112
113                // On boucle sur chaque jeu de demo
114                include_spip('inc/utils');
115                $periodicite = 0;
116                foreach ($jeu as $_service => $_lieu) {
117                        // Si on est en mode prévisions, on impose la périodicité à la valeur par défaut pour le service
118                        if ($mode == 'previsions') {
119                                include_spip("services/${_service}");
120                                $configurer = "${_service}_service2configuration";
121                                $configuration = $configurer($mode);
122                                $periodicite = $configuration['periodicite_defaut'];
123                        }
124
125                        // Chargement des données
126                        $charger = charger_fonction('meteo_charger', 'inc');
127                        $nom_cache = $charger($_lieu, $mode, $periodicite, $_service);
128                        lire_fichier($nom_cache, $contenu_cache);
129                        $tableau = unserialize($contenu_cache);
130
131                        if (!$tableau['extras']['erreur']['type']) {
132                                // Suivant le mode on extrait les données à afficher. Pour le mode prévisions, on choisit le
133                                // jour suivant le jour courant et pour les données heures l'index 0 qui existe toujours.
134                                // En outre, il faut tenir compte pour les prévisions qu'il existe des données "jour" et
135                                // des données "heure" alors que pour les autres modes ll n'existe que des données "jour".
136                                $tableau_jour = ($mode == 'previsions') ? $tableau['donnees'][1] : $tableau['donnees'];
137                                foreach ($config_donnees as $_donnee => $_config) {
138                                        // On détermine la valeur et le type PHP de la données dans le tableau standard et
139                                        // on stocke les informations de configuration rangement pour les prévisions
140                                        if (isset($_config['rangement']) and ($_config['rangement'] == 'heure')) {
141                                                $valeur = $tableau_jour['heure'][0][$_donnee];
142                                                $type_php = gettype($tableau_jour['heure'][0][$_donnee]);
143                                                $rangement = $_config['rangement'];
144                                        } else {
145                                                $valeur = $tableau_jour[$_donnee];
146                                                $type_php = gettype($tableau_jour[$_donnee]);
147                                                $rangement = isset($_config['rangement']) ? $_config['rangement'] : '';
148                                        }
149
150                                        // On construit le tableau de debug
151                                        $debug[$_donnee][$_service]['valeur'] = $valeur;
152                                        if (($_donnee == 'icon_meteo') and tester_url_absolue($valeur)) {
153                                                $debug[$_donnee][$_service]['valeur'] = dirname($valeur) . '/<br />' . basename($valeur);
154                                        }
155                                        $debug[$_donnee][$_service]['type_php'] = $type_php;
156                                        $debug[$_donnee][$_service]['rangement'] = $rangement;
157                                        $debug[$_donnee][$_service]['groupe'] = $_config['groupe'];
158                                        $debug[$_donnee][$_service]['type_unite'] = $_config['type_unite'];
159                                        if ($_donnee != 'erreur') {
160                                                $debug[$_donnee][$_service]['erreur'] = ($type_php === 'NULL') ? 'nonapi' : ($valeur === '' ? 'erreur' : '');
161                                        } else {
162                                                $debug[$_donnee][$_service]['erreur'] = $valeur ? 'erreur' : '';
163                                        }
164                                }
165                        }
166                }
167        }
168
169        return $debug;
170}
171
172
173/**
174 * @param string $donnee
175 * @param mixed  $valeur
176 * @param string $type_php
177 * @param string $type_unite
178 * @param string $service
179 *
180 * @return string
181 */
182function rainette_debug_afficher_donnee($donnee, $valeur, $type_php, $type_unite, $service = 'weather') {
183        $texte = '';
184
185        if ($type_php === 'NULL') {
186                $texte = '<del>API</del>';
187                $type_php = 'null';
188        } elseif ($valeur === '') {
189                if ($donnee != 'erreur') {
190                        $texte = 'Indisponible';
191                } else {
192                        $texte = $valeur ? $valeur : 'Ok';
193                }
194        } elseif ($type_php === 'array') {
195                foreach ($valeur as $_cle => $_valeur) {
196                        $texte .= ($texte ? '<br />' : '') . "<strong>${_cle}</strong> : " . ((gettype($_valeur) === null) ? '<del>API</del>' : $_valeur);
197                }
198        } else {
199                $texte = $type_unite ? rainette_afficher_unite($valeur, $type_unite, -1, $service) : $valeur;
200        }
201        $texte .= "<br /><em>${type_php}</em>";
202
203        return $texte;
204}
205
206/**
207 * @return array
208 */
209function rainette_debug_jeu_defaut() {
210
211        $jeu = array();
212
213        include_spip('rainette_fonctions');
214        $services = rainette_lister_services();
215        if ($services) {
216                foreach ($services as $_service) {
217                        if (($_service == 'weather') or ($_service == 'wunderground')) {
218                                $jeu[$_service] = 'FRXX0076';
219                        } else {
220                                $jeu[$_service] = 'Paris,France';
221                        }
222                }
223        }
224
225        return $jeu;
226}
227
228/**
229 * @return array
230 */
231function rainette_debug_afficher_execution() {
232
233        $debug = array();
234
235        $services = rainette_lister_services();
236        if ($services) {
237                include_spip('inc/config');
238                $execution = lire_config('rainette_execution', array());
239
240                foreach ($services as $_service) {
241                        include_spip("services/${_service}");
242                        $configurer = "${_service}_service2configuration";
243                        $configuration = $configurer('infos');
244
245                        $debug[$_service]['dernier_appel'] = isset($execution[$_service]['dernier_appel'])
246                                ? $execution[$_service]['dernier_appel']
247                                : '--';
248                        foreach (array('year', 'month', 'day', 'hour', 'minute') as $_periode) {
249                                if (isset($configuration['offres']['limites'][$_periode])) {
250                                        $compteur = isset($execution[$_service]['compteurs'][$_periode])
251                                                ? $execution[$_service]['compteurs'][$_periode]
252                                                : '--';
253                                        $debug[$_service][$_periode] = "${compteur} / {$configuration['offres']['limites'][$_periode]}";
254                                } else {
255                                        $debug[$_service][$_periode] = '';
256                                }
257                        }
258                }
259        }
260
261        return $debug;
262}
263
264/**
265 * Fonction permettant de vérifier si la liste des langues de SPIP a changé et qu'il faut modifier la config rainette.
266 *
267 */
268function rainette_debug_verifier_langue_manquante() {
269        include_spip('inc/lang_liste');
270        include_spip('inc/rainette_normaliser');
271        foreach ($GLOBALS['codes_langues'] as $code => $langue) {
272                if (!array_key_exists($code, $GLOBALS['rainette_config']['langues_alternatives'])) {
273                        echo "code manquant $code<br />";
274                }
275        }
276}
Note: See TracBrowser for help on using the repository browser.