source: spip-zone/_plugins_/rainette/trunk/services/wwo.php @ 89107

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

Correction des css des bouton d'admin dans la demo.
Suppression de la fonction xxx_service2unite de chaque service.
On remplace la stockage de l'unité seule par celui de toute la configuration dans le cache.

  • Property svn:eol-style set to native
File size: 21.5 KB
Line 
1<?php
2/**
3 * Ce fichier contient l'ensemble des constantes et fonctions implémentant le service World Weather Online (wwo).
4 * Ce service fournit des données au format XML ou JSON.
5 *
6 * @package SPIP\RAINETTE\WWO
7 */
8
9
10if (!defined("_ECRIRE_INC_VERSION")) return;
11
12if (!defined('_RAINETTE_WWO_URL_BASE'))
13        define('_RAINETTE_WWO_URL_BASE', 'http://api.worldweatheronline.com/free/v2/weather.ashx');
14if (!defined('_RAINETTE_WWO_JOURS_PREVISIONS'))
15        define('_RAINETTE_WWO_JOURS_PREVISIONS', 5);
16if (!defined('_RAINETTE_WWO_SUFFIXE_METRIQUE'))
17        define('_RAINETTE_WWO_SUFFIXE_METRIQUE', 'c:mm:kmph');
18if (!defined('_RAINETTE_WWO_SUFFIXE_STANDARD'))
19        define('_RAINETTE_WWO_SUFFIXE_STANDARD', 'f:in:miles');
20
21
22/**
23 * ------------------------------------------------------------------------------------------------
24 * Les fonctions qui suivent définissent l'API standard du service et sont appelées par la fonction
25 * unique de chargement des données météorologiques `charger_meteo()`.
26 * PACKAGE SPIP\RAINETTE\WWO\API
27 * ------------------------------------------------------------------------------------------------
28 */
29
30/**
31 * @param string        $lieu
32 * @param string        $mode
33 * @return string
34 */
35function wwo_service2cache($lieu, $mode) {
36        $dir = sous_repertoire(_DIR_CACHE, 'rainette');
37        $dir = sous_repertoire($dir, 'wwo');
38        $fichier_cache = $dir . str_replace(array(',', '+', '.'), '-', $lieu) . "_" . $mode . ".txt";
39
40        return $fichier_cache;
41}
42
43/**
44 * @param string        $lieu
45 * @param string        $mode
46 * @return string
47 */
48function wwo_service2url($lieu, $mode) {
49        include_spip('inc/config');
50        $cle = lire_config('rainette/wwo/inscription');
51        $format = lire_config('rainette/wwo/format', 'xml');
52
53        $url = _RAINETTE_WWO_URL_BASE
54                .  '?key=' . $cle
55                .  '&format=' . $format
56                .  '&extra=localObsTime'
57                .  '&q=' . str_replace(' ', '', trim($lieu));
58        if ($mode == 'infos') {
59                $url .= '&includeLocation=yes&cc=no&fx=no';
60        }
61        else {
62                $url .= ($mode == 'previsions') ? '&cc=no&fx=yes&num_of_days=' . _RAINETTE_WWO_JOURS_PREVISIONS : '&cc=yes&fx=no';
63        }
64
65        return $url;
66}
67
68/**
69 * @param string $mode
70 * @return int
71 */
72function wwo_service2reload_time($mode) {
73        static $reload = array('conditions' => 10800, 'previsions' => 14400);
74
75        return $reload[$mode];
76}
77
78/**
79 * @param string        $url
80 * @return array
81 */
82function wwo_url2flux($url) {
83        // Déterminer le format d'échange pour aiguiller vers la bonne conversion
84        include_spip('inc/config');
85        $format = lire_config('rainette/wwo/format', 'xml');
86
87        include_spip('inc/phraser');
88        $flux = ($format == 'xml') ? url2flux_xml($url, false) : url2flux_json($url);
89
90        return $flux;
91}
92
93
94/**
95 * lire le xml fournit par le service meteo et en extraire les infos interessantes
96 * retournees en tableau jour par jour
97 * utilise le parseur xml de Spip
98 *
99 * ne gere pas encore le jour et la nuit de la date courante suivant l'heure!!!!
100 * @param array $flux
101 * @param string $lieu
102 * @return array
103 */
104function wwo_flux2previsions($flux, $lieu) {
105        // Identifier le format d'échange des données
106        include_spip('inc/config');
107        $format = lire_config('rainette/wwo/format', 'xml');
108
109        // Identification des suffixes d'unite pour choisir le bon champ
110        // -> wunderground fournit toujours les valeurs dans les deux systemes d'unites
111        include_spip('inc/config');
112        $unite = lire_config('rainette/wwo/unite', 'm');
113        if ($unite == 'm')
114                $suffixes = explode(':', _RAINETTE_WWO_SUFFIXE_METRIQUE);
115        else
116                $suffixes = explode(':', _RAINETTE_WWO_SUFFIXE_STANDARD);
117
118        // Construire le tableau standard des prévisions météorologiques propres au service
119        $tableau = ($format == 'xml') ? xml2previsions_wwo($flux, $suffixes) : json2previsions_wwo($flux, $suffixes);
120
121        // Compléter le tableau standard avec les états météorologiques calculés pour chaque jour
122        if ($tableau) {
123                $condition = lire_config('rainette/wwo/condition', 'wwo');
124                foreach ($tableau as $_index => $_prevision) {
125                        if ($_prevision[0]['code_meteo']
126                        AND $_prevision[0]['icon_meteo']
127                        AND isset($_prevision[0]['desc_meteo'])) {
128                                // Le mode jour/nuit n'est pas supporté par ce service.
129                                $tableau[$_index]['periode'] = 0; // jour
130
131                                // Determination, suivant le mode choisi, du code, de l'icone et du resume qui seront affiches
132                                if ($condition == 'wwo') {
133                                        // On affiche les prévisions natives fournies par le service.
134                                        // Pour le resume, wwo ne fournit pas de traduction : on stocke donc le code meteo afin
135                                        // de le traduire à partir des fichiers de langue SPIP.
136                                        $tableau[$_index][0]['icone']['code'] = $_prevision[0]['code_meteo'];
137                                        $tableau[$_index][0]['icone']['url'] = copie_locale($_prevision[0]['icon_meteo']);
138                                        $tableau[$_index][0]['resume'] = $_prevision[0]['code_meteo'];
139                                }
140                                else {
141                                        // On affiche les conditions traduites dans le systeme weather.com
142                                        $meteo = meteo_wwo2weather($_prevision[0]['code_meteo'], $tableau[$_index]['periode']);
143                                        $tableau[$_index][0]['icone'] = $meteo;
144                                        $tableau[$_index][0]['resume'] = $meteo;
145                                }
146                        }
147                }
148        }
149
150        // Traitement des erreurs de flux
151        $index = count($tableau);
152        $tableau[$index]['erreur'] = (!$tableau) ? 'chargement' : '';
153
154        // Ajout des informations communes dans l'index adéquat
155        $tableau[$index]['max_jours'] = _RAINETTE_WWO_JOURS_PREVISIONS;
156
157        return $tableau;
158}
159
160/**
161 * @param array         $flux
162 * @param string        $lieu
163 * @return array
164 */
165function wwo_flux2conditions($flux, $lieu) {
166        // Identifier le format d'échange des données
167        include_spip('inc/config');
168        $format = lire_config('rainette/wwo/format', 'xml');
169
170        // Construire le tableau standard des conditions météorologiques propres au service
171        $tableau = ($format == 'xml') ? xml2conditions_wwo($flux) : json2conditions_wwo($flux);
172
173        // Convertir les informations exprimées en système métrique dans le systeme US si la
174        // configuration le demande
175        $unite = lire_config('rainette/wwo/unite', 'm');
176        if ($unite == 's') {
177                // Seules la température et la vitesse du vent sont fournies dans les deux systèmes.
178                // On ne les utilise pas et on convertit l'ensemble des données.
179                $tableau['temperature_reelle'] = ($tableau['temperature_reelle'])
180                        ? celsius2farenheit($tableau['temperature_reelle']) : '';
181                $tableau['temperature_ressentie'] = ($tableau['temperature_ressentie'])
182                        ? celsius2farenheit($tableau['temperature_ressentie']) : '';
183                $tableau['vitesse_vent'] = ($tableau['vitesse_vent'])
184                        ? kilometre2mile($tableau['vitesse_vent']) : '';
185                $tableau['visibilite'] = ($tableau['visibilite'])
186                        ? kilometre2mile($tableau['visibilite']) : '';
187                $tableau['pression'] = ($tableau['pression'])
188                        ? millibar2inch($tableau['pression']) : '';
189        }
190
191        // Compléter le tableau standard avec les états météorologiques calculés
192        if ($tableau['code_meteo']
193        AND $tableau['icon_meteo']
194        AND isset($tableau['desc_meteo'])) {
195                // Determination de l'indicateur jour/nuit qui permet de choisir le bon icone
196                // Pour ce service aucun indicateur n'est disponible
197                // -> on utilise le nom de l'icone qui contient l'indication "night"
198                $icone = basename($tableau['icon_meteo']);
199                if (strpos($icone, '_night') === false)
200                        $tableau['periode'] = 0; // jour
201                else
202                        $tableau['periode'] = 1; // nuit
203
204                // Determination, suivant le mode choisi, du code, de l'icone et du resume qui seront affiches
205                $condition = lire_config('rainette/wwo/condition', 'wwo');
206                if ($condition == 'wwo') {
207                        // On affiche les conditions natives fournies par le service.
208                        // Pour le resume, wwo ne fournit pas de traduction : on stocke donc le code meteo afin
209                        // de le traduire à partir des fichiers de langue SPIP.
210                        $tableau['icone']['code'] = $tableau['code_meteo'];
211                        $tableau['icone']['url'] = copie_locale($tableau['icon_meteo']);
212                        $tableau['resume'] = $tableau['code_meteo'];
213                }
214                else {
215                        // On affiche les conditions traduites dans le systeme weather.com
216                        $meteo = meteo_wwo2weather($tableau['code_meteo'], $tableau['periode']);
217                        $tableau['icone'] = $meteo;
218                        $tableau['resume'] = $meteo;
219                }
220        }
221
222        // Traitement des erreurs de flux
223        $tableau['erreur'] = (!$tableau) ? 'chargement' : '';
224
225        return $tableau;
226}
227
228/**
229 * @param array         $flux
230 * @param string        $lieu
231 * @return array
232 */
233function wwo_flux2infos($flux, $lieu) {
234        // Identifier le format d'échange des données
235        include_spip('inc/config');
236        $format = lire_config('rainette/wwo/format', 'xml');
237
238        // Construire le tableau standard des informations sur le lieu et ajouter le nombre de jours de prévisions
239        $tableau = ($format == 'xml') ? xml2infos_wwo($flux) : json2infos_wwo($flux);
240        $tableau['max_previsions'] = _RAINETTE_WWO_JOURS_PREVISIONS;
241
242        // Traitement des erreurs de flux
243        $tableau['erreur'] = (!$tableau) ? 'chargement' : '';
244
245        return $tableau;
246}
247
248/**
249 * @return array
250 */
251function wwo_service2credits() {
252
253        $credits['titre'] = 'Free local weather content provider';
254        $credits['logo'] = NULL;
255        $credits['lien'] = 'http://www.worldweatheronline.com/';
256
257        return $credits;
258}
259
260
261/**
262 * -----------------------------------------------------------------------------------------------
263 * Les fonctions qui suivent sont permettent le décodage des données météorologiques reçues au
264 * format XML. Ce sont des sous-fonctions internes appelées uniquement par les fonctions de l'API.
265 * PACKAGE SPIP\RAINETTE\WWO\XML
266 * -----------------------------------------------------------------------------------------------
267 */
268
269function xml2previsions_wwo($flux, $suffixes) {
270        $tableau = array();
271
272        if (isset($flux['children']['weather'])) {
273                $previsions = $flux['children']['weather'];
274                $maintenant = time();
275
276                if ($previsions) {
277                        foreach ($previsions as $_index => $_prevision) {
278                                if (isset($_prevision['children'])) {
279                                        $_prevision = $_prevision['children'];
280                                        // Index du jour et date du jour
281                                        $tableau[$_index]['index'] = $_index;
282                                        $tableau[$_index]['date'] = (isset($_prevision['date']))
283                                                ? $_prevision['date'][0]['text']
284                                                : date('Y-m-d', $maintenant + 24*3600*$_index);
285
286                                        // Date complete des lever/coucher du soleil
287                                        $tableau[$_index]['lever_soleil'] = NULL;
288                                        $tableau[$_index]['coucher_soleil'] = NULL;
289
290                                        // Previsions du jour
291                                        list($ut, $up, $uv) = $suffixes;
292                                        $tableau[$_index][0]['temperature_max'] = (isset($_prevision["tempmax$ut"])) ? floatval($_prevision["tempmax$ut"][0]['text']) : '';
293                                        $tableau[$_index][0]['temperature_min'] = (isset($_prevision["tempmin$ut"])) ? floatval($_prevision["tempmin$ut"][0]['text']) : '';
294                                        $tableau[$_index][0]['vitesse_vent'] = (isset($_prevision["windspeed$uv"])) ? floatval($_prevision["windspeed$uv"][0]['text']) : '';
295                                        $tableau[$_index][0]['angle_vent'] = (isset($_prevision['winddirdegree'])) ? intval($_prevision['winddirdegree'][0]['text']) : '';
296                                        $tableau[$_index][0]['direction_vent'] = (isset($_prevision['winddir16point'])) ? $_prevision['winddir16point'][0]['text'] : '';
297
298                                        $tableau[$_index][0]['risque_precipitation'] = NULL;
299                                        include_spip('inc/convertir');
300                                        $tableau[$_index][0]['precipitation'] = (isset($_prevision['precipmm'])) ? floatval($_prevision['precipmm'][0]['text']) : '';
301                                        if (($up == 'in') AND $tableau[$_index][0]['precipitation'])
302                                                $tableau[$_index][0]['precipitation'] = millimetre2inch($tableau[$_index][0]['precipitation']);
303                                        $tableau[$_index][0]['humidite'] = NULL;
304
305                                        $tableau[$_index][0]['code_meteo'] = (isset($_prevision['weathercode'])) ? intval($_prevision['weathercode'][0]['text']) : '';
306                                        $tableau[$_index][0]['icon_meteo'] = (isset($_prevision['weathericonurl'])) ? $_prevision['weathericonurl'][0]['text'] : '';
307                                        $tableau[$_index][0]['desc_meteo'] = (isset($_prevision['weatherdesc'])) ? $_prevision['weatherdesc'][0]['text'] : '';
308
309                                        // Previsions de la nuit si elle existe
310                                        $tableau[$_index][1] = NULL;
311                                }
312                        }
313                }
314        }
315
316        return $tableau;
317}
318
319
320function xml2conditions_wwo($flux) {
321        $tableau = array();
322
323        if (isset($flux['children']['current_condition'][0]['children'])) {
324                include_spip('inc/convertir');
325                $conditions = $flux['children']['current_condition'][0]['children'];
326
327                // Date d'observation
328                $date_maj = (isset($conditions['localobsdatetime'])) ? strtotime($conditions['localobsdatetime'][0]['text']) : '';
329                $tableau['derniere_maj'] = date('Y-m-d H:i:s', $date_maj);
330                // Station d'observation
331                $tableau['station'] = NULL;
332
333                // Liste des conditions meteo extraite dans le systeme metrique
334                $tableau['vitesse_vent'] = (isset($conditions['windspeedkmph'])) ? floatval($conditions['windspeedkmph'][0]['text']) : '';
335                $tableau['angle_vent'] = (isset($conditions['winddirdegree'])) ? intval($conditions['winddirdegree'][0]['text']) : '';
336                $tableau['direction_vent'] = (isset($conditions['winddir16point'])) ? $conditions['winddir16point'][0]['text'] : '';
337
338                $tableau['temperature_reelle'] = (isset($conditions['temp_c'])) ? floatval($conditions['temp_c'][0]['text']) : '';
339                $tableau['temperature_ressentie'] = (isset($conditions['temp_c'])) ? temperature2ressenti($tableau['temperature_reelle'], $tableau['vitesse_vent']) : '';
340
341                $tableau['humidite'] = (isset($conditions['humidity'])) ? intval($conditions['humidity'][0]['text']) : '';
342                $tableau['point_rosee'] = NULL;
343
344                $tableau['pression'] = (isset($conditions['pressure'])) ? floatval($conditions['pressure'][0]['text']) : '';
345                $tableau['tendance_pression'] = NULL;
346
347                $tableau['visibilite'] = (isset($conditions['visibility'])) ? floatval($conditions['visibility'][0]['text']) : '';
348
349                // Code meteo, resume et icone natifs au service
350                $tableau['code_meteo'] = (isset($conditions['weathercode'])) ? intval($conditions['weathercode'][0]['text']) : '';
351                $tableau['icon_meteo'] = (isset($conditions['weathericonurl'])) ? $conditions['weathericonurl'][0]['text'] : '';
352                $tableau['desc_meteo'] = (isset($conditions['weatherdesc'])) ? $conditions['weatherdesc'][0]['text'] : '';
353        }
354
355        return $tableau;
356}
357
358function xml2infos_wwo($flux) {
359        $tableau = array();
360
361        if (isset($flux['children']['nearest_area'][0]['children'])) {
362                $infos = $flux['children']['nearest_area'][0]['children'];
363
364                if (isset($infos['areaname'])) {
365                        $tableau['ville'] = $infos['areaname'][0]['text'];
366                        $tableau['ville'] .= (isset($infos['country'])) ? ', ' . $infos['country'][0]['text'] : '';
367                }
368                $tableau['region'] = (isset($infos['region'])) ? $infos['region'][0]['text'] : '';
369
370                $tableau['longitude'] = (isset($infos['longitude'])) ? floatval($infos['longitude'][0]['text']) : '';
371                $tableau['latitude'] = (isset($infos['latitude'])) ? floatval($infos['latitude'][0]['text']) : '';
372
373                $tableau['population'] = (isset($infos['population'])) ? intval($infos['population'][0]['text']) : '';
374        }
375
376        return $tableau;
377}
378
379/**
380 * ------------------------------------------------------------------------------------------------
381 * Les fonctions qui suivent sont permettent le décodage des données météorologiques reçues au
382 * format JSON. Ce sont des sous-fonctions internes appelées uniquement par les fonctions de l'API.
383 * PACKAGE SPIP\RAINETTE\WWO\JSON
384 * ------------------------------------------------------------------------------------------------
385 */
386
387function json2previsions_wwo($flux, $suffixes) {
388        $tableau = array();
389
390        if (isset($flux['data']['weather'])) {
391                $previsions = $flux['data']['weather'];
392                $maintenant = time();
393
394                if ($previsions) {
395                        foreach ($previsions as $_index => $_prevision) {
396                                if ($_prevision) {
397                                        // Index du jour et date du jour
398                                        $tableau[$_index]['index'] = $_index;
399                                        $tableau[$_index]['date'] = (isset($_prevision['date']))
400                                                ? $_prevision['date']
401                                                : date('Y-m-d', $maintenant + 24*3600*$_index);
402
403                                        // Date complete des lever/coucher du soleil
404                                        $tableau[$_index]['lever_soleil'] = NULL;
405                                        $tableau[$_index]['coucher_soleil'] = NULL;
406
407                                        // Previsions du jour
408                                        list($ut, $up, $uv) = array_map('ucfirst', $suffixes);
409                                        $tableau[$_index][0]['temperature_max'] = (isset($_prevision["tempMax$ut"])) ? floatval($_prevision["tempMax$ut"]) : '';
410                                        $tableau[$_index][0]['temperature_min'] = (isset($_prevision["tempMin$ut"])) ? floatval($_prevision["tempMin$ut"]) : '';
411                                        $tableau[$_index][0]['vitesse_vent'] = (isset($_prevision["windspeed$uv"])) ? floatval($_prevision["windspeed$uv"]) : '';
412                                        $tableau[$_index][0]['angle_vent'] = (isset($_prevision['winddirDegree'])) ? intval($_prevision['winddirDegree']) : '';
413                                        $tableau[$_index][0]['direction_vent'] = (isset($_prevision['winddir16Point'])) ? $_prevision['winddir16Point'] : '';
414
415                                        $tableau[$_index][0]['risque_precipitation'] = NULL;
416                                        include_spip('inc/convertir');
417                                        $tableau[$_index][0]['precipitation'] = (isset($_prevision['precipMM'])) ? floatval($_prevision['precipMM']) : '';
418                                        if (($up == 'in') AND $tableau[$_index][0]['precipitation'])
419                                                $tableau[$_index][0]['precipitation'] = millimetre2inch($tableau[$_index][0]['precipitation']);
420                                        $tableau[$_index][0]['humidite'] = NULL;
421
422                                        $tableau[$_index][0]['code_meteo'] = (isset($_prevision['weatherCode'])) ? intval($_prevision['weatherCode']) : '';
423                                        $tableau[$_index][0]['icon_meteo'] = (isset($_prevision['weatherIconUrl'])) ? $_prevision['weatherIconUrl'][0]['value'] : '';
424                                        $tableau[$_index][0]['desc_meteo'] = (isset($_prevision['weatherDesc'])) ? $_prevision['weatherDesc'][0]['value'] : '';
425
426                                        // Previsions de la nuit si elle existe
427                                        $tableau[$_index][1] = NULL;
428                                }
429                        }
430                }
431        }
432
433        return $tableau;
434}
435
436function json2conditions_wwo($flux) {
437        $tableau = array();
438
439        if (isset($flux['data']['current_condition'][0])) {
440                $conditions = $flux['data']['current_condition'][0];
441
442                // Date d'observation
443                $date_maj = (isset($conditions['localObsDateTime'])) ? strtotime($conditions['localObsDateTime']) : '';
444                $tableau['derniere_maj'] = date('Y-m-d H:i:s', $date_maj);
445                // Station d'observation
446                $tableau['station'] = NULL;
447
448                // Liste des conditions meteo extraite dans le systeme metrique
449                $tableau['vitesse_vent'] = (isset($conditions['windspeedKmph'])) ? floatval($conditions['windspeedKmph']) : '';
450                $tableau['angle_vent'] = (isset($conditions['winddirDegree'])) ? intval($conditions['winddirDegree']) : '';
451                $tableau['direction_vent'] = (isset($conditions['winddir16Point'])) ? $conditions['winddir16Point'] : '';
452
453                include_spip('inc/convertir');
454                $tableau['temperature_reelle'] = (isset($conditions['temp_C'])) ? floatval($conditions['temp_C']) : '';
455                $tableau['temperature_ressentie'] = (isset($conditions['temp_C'])) ? temperature2ressenti($tableau['temperature_reelle'], $tableau['vitesse_vent']) : '';
456
457                $tableau['humidite'] = (isset($conditions['humidity'])) ? intval($conditions['humidity']) : '';
458                $tableau['point_rosee'] = NULL;
459
460                $tableau['pression'] = (isset($conditions['pressure'])) ? floatval($conditions['pressure']) : '';
461                $tableau['tendance_pression'] = NULL;
462
463                $tableau['visibilite'] = (isset($conditions['visibility'])) ? floatval($conditions['visibility']) : '';
464
465                // Code meteo, resume et icone natifs au service
466                $tableau['code_meteo'] = (isset($conditions['weatherCode'])) ? intval($conditions['weatherCode']) : '';
467                $tableau['icon_meteo'] = (isset($conditions['weatherIconUrl'])) ? $conditions['weatherIconUrl'][0]['value'] : '';
468                $tableau['desc_meteo'] = (isset($conditions['weatherDesc'])) ? $conditions['weatherDesc'][0]['value'] : '';
469        }
470
471        return $tableau;
472}
473
474function json2infos_wwo($flux) {
475        $tableau = array();
476
477        if (isset($flux['data']['nearest_area'][0])) {
478                $infos = $flux['data']['nearest_area'][0];
479
480                if (isset($infos['areaName'])) {
481                        $tableau['ville'] = $infos['areaName'][0]['value'];
482                        $tableau['ville'] .= (isset($infos['country'])) ? ', ' . $infos['country'][0]['value'] : '';
483                }
484                $tableau['region'] = (isset($infos['region'])) ? $infos['region'][0]['value'] : '';
485
486                $tableau['longitude'] = (isset($infos['longitude'])) ? floatval($infos['longitude']) : '';
487                $tableau['latitude'] = (isset($infos['latitude'])) ? floatval($infos['latitude']) : '';
488
489                $tableau['population'] = (isset($infos['population'])) ? intval($infos['population']) : '';
490        }
491
492        return $tableau;
493}
494
495
496/**
497 * ---------------------------------------------------------------------------------------------
498 * Les fonctions qui suivent sont des utilitaires utilisés uniquement appelées par les fonctions
499 * de l'API.
500 * PACKAGE SPIP\RAINETTE\WWO\OUTILS
501 * ---------------------------------------------------------------------------------------------
502 */
503
504/**
505 * @internal
506 *
507 * @link http://plugins.trac.wordpress.org/browser/weather-and-weather-forecast-widget/trunk/gg_funx_.php
508 * Transcodage issu du plugin Wordpress weather forecast.
509 *
510 * @param string $meteo
511 * @param int $periode
512 * @return string
513 */
514function meteo_wwo2weather($meteo, $periode=0) {
515        static $wwo2weather = array(
516                                                        395=> array(41,46),
517                                                        392=> array(41,46),
518                                                        389=> array(38,47),
519                                                        386=> array(37,47),
520                                                        377=> array(6,6),
521                                                        374=> array(6,6),
522                                                        371=> array(14,14),
523                                                        368=> array(13,13),
524                                                        365=> array(6,6),
525                                                        362=> array(6,6),
526                                                        359=> array(11,11),
527                                                        356=> array(11,11),
528                                                        353=> array(9,9),
529                                                        350=> array(18,18),
530                                                        338=> array(16,16),
531                                                        335=> array(16,16),
532                                                        332=> array(14,14),
533                                                        329=> array(14,14),
534                                                        326=> array(13,13),
535                                                        323=> array(13,13),
536                                                        320=> array(18,18),
537                                                        317=> array(18,18),
538                                                        314=> array(8,8),
539                                                        311=> array(8,8),
540                                                        308=> array(40,40),
541                                                        305=> array(39,45),
542                                                        302=> array(11,11),
543                                                        299=> array(39,45),
544                                                        296=> array(9,9),
545                                                        293=> array(9,9),
546                                                        284=> array(10,10),
547                                                        281=> array(9,9),
548                                                        266=> array(9,9),
549                                                        263=> array(9,9),
550                                                        260=> array(20,20),
551                                                        248=> array(20,20),
552                                                        230=> array(16,16),
553                                                        227=> array(15,15),
554                                                        200=> array(38,47),
555                                                        185=> array(10,10),
556                                                        182=> array(18,18),
557                                                        179=> array(16,16),
558                                                        176=> array(40,49),
559                                                        143=> array(20,20),
560                                                        122=> array(26,26),
561                                                        119=> array(28,27),
562                                                        116=> array(30,29),
563                                                        113=> array(32,31));
564
565        $icone = 'na';
566        if (array_key_exists($meteo,  $wwo2weather))
567                $icone = strval($wwo2weather[$meteo][$periode]);
568        return $icone;
569}
570
571?>
Note: See TracBrowser for help on using the repository browser.