Changeset 94614 in spip-zone


Ignore:
Timestamp:
Jan 16, 2016, 6:14:00 PM (4 years ago)
Author:
eric@…
Message:

Pleins de modifications pour faire fonctionner les prévisions

Location:
_plugins_/rainette/trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rainette/trunk/inc/charger_meteo.php

    r94404 r94614  
    195195
    196196                                                // 3- Compléments standard communs à tous les services mais fonction du mode
    197                                                 if ($mode != 'conditions') {
    198                                                         $donnees['max_previsions'] = $configuration['max_previsions'];
    199                                                 }
    200197                                                if ($mode == 'conditions') {
    201198                                                        // Calcul du risque uv à partir de l'indice uv si celui-ci est fourni
     
    217214                }
    218215
    219 
    220216                // 4- Compléments standard à tous les services et tous les modes
    221                 $extra = array();
    222                 $extra['credits'] = $configuration['credits'];
    223                 $extra['config'] = $configuration_utilisateur;
    224                 $extra['erreur'] = '';
    225                 $extra['lieu'] = $lieu;
    226                 $extra['mode'] = $mode;
    227                 $extra['periodicite'] = $periodicite;
    228                 $extra['service'] = $service;
    229 
     217                $extras = array();
     218                $extras['credits'] = $configuration['credits'];
     219                $extras['config'] = $configuration_utilisateur;
     220                $extras['erreur'] = '';
     221                $extras['lieu'] = $lieu;
     222                $extras['mode'] = $mode;
     223                $extras['periodicite_cache'] = $periodicite;
     224                $extras['service'] = $service;
     225
     226                // On range les données et les extras dans un tableau associatif à deux entrées ('donnees', 'extras')
    230227                if ($tableau) {
    231                         $tableau = array_merge(array($extra), $tableau);
     228                        // Pour les modes "conditions" et "infos" l'ensemble des données météo est accessible sous
     229                        // l'index 'donnees'. Il faut donc supprimer l'index 0 provenant du traitement commun avec
     230                        // les prévisions.
     231                        // Pour les prévisions l'index 0 à n désigne le jour, il faut donc le conserver
     232                        $tableau = array(
     233                                'donnees' => ($mode != 'previsions' ? array_shift($tableau) : $tableau),
     234                                'extras' => $extras
     235                        );
    232236                } else {
    233237                        // Traitement des erreurs de flux. On positionne toujours les bloc extra contenant l'erreur à l'index 0,
    234238                        // le bloc des données qui est mis à tableau vide dans ce cas à l'index 1.
    235                         $extra['erreur'] = 'chargement';
    236                         $tableau[0] = $extra;
    237                         $tableau[1] = array();
     239                        $extras['erreur'] = 'chargement';
     240                        $tableau = array(
     241                                'donnees' => array(),
     242                                'extras'  => $extras
     243                        );
    238244                }
    239245
  • _plugins_/rainette/trunk/inc/debusquer.php

    r94404 r94614  
    11<?php
    22
    3 if (!defined("_ECRIRE_INC_VERSION")) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46
    5 if (!defined('_RAINETTE_DEBUG'))
    6         define ('_RAINETTE_DEBUG', false);
     7if (!defined('_RAINETTE_DEBUG')) {
     8        define('_RAINETTE_DEBUG', false);
     9}
    710
    8 if (!defined('_RAINETTE_DEBUG_PREVISIONS'))
     11if (!defined('_RAINETTE_DEBUG_PREVISIONS')) {
    912        define('_RAINETTE_DEBUG_PREVISIONS', 'index:date:lever_soleil:coucher_soleil:vitesse_vent:angle_vent:direction_vent:temperature_max:temperature_min:
    1013                risque_precipitation:precipitation:humidite:pression:code_meteo:icon_meteo:desc_meteo:periode:icone:resume');
    11 if (!defined('_RAINETTE_DEBUG_CONDITIONS'))
     14}
     15if (!defined('_RAINETTE_DEBUG_CONDITIONS')) {
    1216        define('_RAINETTE_DEBUG_CONDITIONS',
    13                 'Donn&#233;es d\'observation:derniere_maj/station
     17        'Donn&#233;es d\'observation:derniere_maj/station
    1418                |Temp&#233;ratures:temperature_reelle/temperature_ressentie
    1519                |Donn&#233;es an&#233;mom&#233;triques:vitesse_vent/angle_vent/direction_vent
     
    1721                |&#201;tats m&#233;t&#233orologiques natifs:code_meteo/icon_meteo/desc_meteo
    1822                |&#201;tats m&#233;t&#233orologiques calcul&#233;s:icone/resume/periode');
    19 if (!defined('_RAINETTE_DEBUG_INFOS'))
     23}
     24if (!defined('_RAINETTE_DEBUG_INFOS')) {
    2025        define('_RAINETTE_DEBUG_INFOS',
    21                 'Lieu:ville/region
     26        'Lieu:ville/region
    2227                |Coordonn&#233;es:longitude/latitude
    2328                |D&#233;mographie:population');
    24 if (!defined('_RAINETTE_DEBUG_TYPE_UNITE'))
     29}
     30if (!defined('_RAINETTE_DEBUG_TYPE_UNITE')) {
    2531        define('_RAINETTE_DEBUG_TYPE_UNITE',
    26                 'population:population
     32        'population:population
    2733                |temperature:temperature_reelle,temperature_ressentie,point_rosee,temperature_max,temperature_min
    2834                |vitesse:vitesse_vent
     
    3339                |precipitation:precipitation
    3440                |indice:indice_uv');
     41}
    3542
    3643
    37 function rainette_dbg_afficher_cache($lieu, $mode='previsions', $service='weather') {
     44function rainette_dbg_afficher_cache($lieu, $mode = 'previsions', $service = 'weather') {
    3845        $debug = '';
    3946
    4047        // Recuperation du tableau des conditions courantes
    41         if (_RAINETTE_DEBUG AND function_exists('bel_env')) {
     48        if (_RAINETTE_DEBUG and function_exists('bel_env')) {
    4249                $charger = charger_fonction('charger_meteo', 'inc');
    4350                $nom_fichier = $charger($lieu, $mode, $service);
     
    5158                                // Pour les prévisions les informations communes sont stockées dans un index
    5259                                // supplémentaire en fin de tableau
    53                                 $index = count($tableau)-1;
     60                                $index = count($tableau) - 1;
    5461                                $tableau[$index]['lieu'] = $lieu;
    5562                                $tableau[$index]['mode'] = $mode;
    5663                                $tableau[$index]['service'] = $service;
    57                         }
    58                         else {
     64                        } else {
    5965                                $tableau['lieu'] = $lieu;
    6066                                $tableau['mode'] = $mode;
     
    7076
    7177
    72 function rainette_dbg_comparer_services($mode='conditions', $jeu=array()) {
     78function rainette_dbg_comparer_services($mode = 'conditions', $jeu = array()) {
    7379        $debug = array();
    7480
    75         if (!$mode)
     81        if (!$mode) {
    7682                $mode = 'conditions';
     83        }
    7784
    7885        $donnees = constant('_RAINETTE_DEBUG_' . strtoupper($mode));
     
    8087
    8188        if ($donnees) {
    82                 if (!$jeu)
     89                if (!$jeu) {
    8390                        $jeu = array(
    84                                 'weather' => 'FRXX0076',
    85                                 'owm' => 'Paris,Fr',
    86                                 'wwo' => 'Paris,France',
    87                                 'wunderground' => 'Paris,France');
     91                                'weather'      => 'FRXX0076',
     92                                'owm'          => 'Paris,Fr',
     93                                'wwo'          => 'Paris,France',
     94                                'wunderground' => 'Paris,France'
     95                        );
     96                }
    8897
    8998                // Recuperation du tableau des conditions courantes
    90                 foreach($jeu as $_service => $_lieu) {
     99                foreach ($jeu as $_service => $_lieu) {
    91100                        $charger = charger_fonction('charger_meteo', 'inc');
    92101                        $nom_fichier = $charger($_lieu, $mode, $_service);
    93102                        if ($nom_fichier) {
    94103                                $contenu = '';
    95                                 lire_fichier($nom_fichier,$contenu);
     104                                lire_fichier($nom_fichier, $contenu);
    96105                                $tableau = unserialize($contenu);
    97106                                if ($tableau) {
    98                                         foreach($tableau as $_donnee => $_valeur) {
     107                                        foreach ($tableau as $_donnee => $_valeur) {
    99108                                                $type = gettype($tableau[$_donnee]);
    100109                                                $debug[$_donnee][$_service]['valeur'] = $_valeur;
    101110                                                $debug[$_donnee][$_service]['type'] = $type;
    102                                                 if ($_donnee != 'erreur')
     111                                                if ($_donnee != 'erreur') {
    103112                                                        $debug[$_donnee][$_service]['erreur'] = ($type === 'NULL') ? 'nonapi' : ($_valeur === '' ? 'erreur' : '');
    104                                                 else
     113                                                } else {
    105114                                                        $debug[$_donnee][$_service]['erreur'] = $_valeur ? 'erreur' : '';
     115                                                }
    106116                                        }
    107117                                }
     
    114124
    115125
    116 function rainette_dbg_afficher_donnee($donnee, $valeur, $type_php, $service='weather') {
     126function rainette_dbg_afficher_donnee($donnee, $valeur, $type_php, $service = 'weather') {
    117127        static $types_unite = array();
    118128        $texte = '';
     
    123133                        list($type, $donnees) = explode(':', trim($_config_type));
    124134                        foreach (explode(',', $donnees) as $_donnee) {
    125                                         $types_unite[$_donnee] = $type;
     135                                $types_unite[$_donnee] = $type;
    126136                        }
    127137                }
     
    132142                $texte = '<del>API</del>';
    133143                $type_php = '';
    134         }
    135         elseif ($valeur === '') {
    136                 if ($donnee != 'erreur')
    137                         $texte =  'Indisponible';
    138                 else {
     144        } elseif ($valeur === '') {
     145                if ($donnee != 'erreur') {
     146                        $texte = 'Indisponible';
     147                } else {
    139148                        $texte = $valeur ? $valeur : 'Ok';
    140149                }
    141         }
    142         elseif ($type_php === 'array') {
     150        } elseif ($type_php === 'array') {
    143151                foreach ($valeur as $_cle => $_valeur) {
    144                         $texte .= ($texte ? '<br />' : '') . "<strong>${_cle}</strong> : " . ((gettype($_valeur) === NULL) ? '<del>API</del>' : $_valeur);
     152                        $texte .= ($texte ? '<br />' : '') . "<strong>${_cle}</strong> : " . ((gettype($_valeur) === null) ? '<del>API</del>' : $_valeur);
    145153                }
    146         }
    147         else {
    148                         $texte = $type_donnee ? rainette_afficher_unite($valeur, $type_donnee, -1, $service) : $valeur;
     154        } else {
     155                $texte = $type_donnee ? rainette_afficher_unite($valeur, $type_donnee, -1, $service) : $valeur;
    149156        }
    150157        $texte .= "<br /><em>${type_php}</em>";
     
    152159        return $texte;
    153160}
    154 
    155 ?>
  • _plugins_/rainette/trunk/inc/phraser.php

    r79738 r94614  
    11<?php
    22
    3 if (!defined("_ECRIRE_INC_VERSION")) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46
    57/**
    68 * @param string $url
    79 * @param string $utiliser_namespace
     10 *
    811 * @return array
    912 */
    10 function url2flux_xml($url, $utiliser_namespace='false') {
     13function url2flux_xml($url, $utiliser_namespace = 'false') {
    1114
    1215        // Acquisition des données spécifiées par l'url
     
    2427/**
    2528 * @param string $url
     29 *
    2630 * @return array
    2731 */
     
    3741        return $json;
    3842}
    39 
    40 ?>
  • _plugins_/rainette/trunk/lang/paquet-rainette_fr.php

    r83725 r94614  
    11<?php
     2// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
    23
    3 // Ceci est un fichier langue de SPIP -- This is a SPIP language file
    4 
    5 ///  Fichier produit par PlugOnet
    6 // Module: paquet-rainette
    7 // Langue: fr
    8 // Date: 05-08-2012 17:10:32
    9 // Items: 2
    10 
    11 if (!defined('_ECRIRE_INC_VERSION')) return;
     4if (!defined('_ECRIRE_INC_VERSION')) {
     5        return;
     6}
    127
    138$GLOBALS[$GLOBALS['idx_lang']] = array(
    149
    15 // R
    16         'rainette_description' => 'Cette nouvelle version de Rainette permet de choisir son service météo parmi weather.com, Wunderground, World Weather Online, Open Weather Map ou Yahoo. Une configuration est disponible pour chaque service en particulier pour saisir une clé d\'enregistrement. Les affichages proposées par cette version sont incompatibles avec ceux de la branche v1.
     10        // R
     11        'rainette_description' => 'Cette nouvelle version de Rainette permet de choisir son service météo parmi Weather.com, Wunderground, World Weather Online ou Open Weather Map. Une configuration est disponible pour chaque service en particulier pour saisir une clé d\'enregistrement. Les affichages proposées par cette version sont incompatibles avec ceux des branches v1 et v2.
    1712
    18 Ce plugin permet d\'afficher les conditions et les prévisions météorologiques d\'une ville donnée à partir du flux xml fourni par un des services méteorologiques supportés.
     13Ce plugin permet d\'afficher les conditions et les prévisions météorologiques d\'une ville donnée à partir du flux fourni par un des services méteorologiques supportés.
    1914Il ne stocke aucune information en base de données ni ne gère le choix des villes.
    2015
    2116L\'affichage des données météorologiques se fait principalement via l\'utilisation de modèles dans les squelettes. Le plugin propose des
    2217modèles par défaut comme {{rainette_previsions}} et {{rainette_conditions}}. Il est possible aussi d\'afficher les informations sur la ville choisie soit via le modèle {{rainette_infos}},
    23 soit via la balise {{RAINETTE_INFOS}}. Tous les affichages proposés par Rainette sont personnalisables (icônes, libellés, unités, présentation...).
     18soit via la balise <code>#RAINETTE_INFOS</code>. Tous les affichages proposés par Rainette sont personnalisables (icônes, libellés, unités, présentation...).
    2419
    25 Une page « Meteo » compatible avec les squelettes Z est disponible : elle propose les conditions et prévisions à 10 jours d\'une ville donnée.
    26 
    27 Essayez la page de démo {demo/rainette.html} pour des exemples d\'utilisation.',
    28         'rainette_slogan' => 'La météo au quotidien',
     20Une page « Meteo » compatible avec les squelettes Z est disponible : elle propose les conditions et prévisions d\'une ville donnée.',
     21        'rainette_slogan'      => 'La météo au quotidien',
    2922);
    30 ?>
  • _plugins_/rainette/trunk/modeles/conditions_tempsreel.html

    r94404 r94614  
    77        <div class="statut">
    88                <div class="cadre">
    9                         <div class="icone">[(#ENV{icone}|rainette_afficher_icone{grand})]</div>
    10                         <div class="t_reelle">[(#ENV{temperature_reelle}|rainette_afficher_unite{temperature, -1, #ENV{service, weather}})]</div>
    11                         <div class="t_ressentie"><:rainette:temperature_ressentie:>&nbsp;:[&nbsp;(#ENV{temperature_ressentie}|rainette_afficher_unite{temperature, -1, #ENV{service, weather}})]<br/></div>
     9                        <div class="icone">[(#ENV{donnees/icone}|rainette_afficher_icone{grand})]</div>
     10                        <div class="t_reelle">[(#ENV{donnees/temperature_reelle}|rainette_afficher_unite{temperature, -1, #ENV{extras/service}})]</div>
     11                        <div class="t_ressentie"><:rainette:temperature_ressentie:>&nbsp;:[&nbsp;(#ENV{donnees/temperature_ressentie}|rainette_afficher_unite{temperature, -1, #ENV{extras/service}})]<br/></div>
    1212                        <br style="clear:both" />
    13                         <div class="resume">[(#ENV{resume}|rainette_afficher_resume)]</div>
     13                        <div class="resume">[(#ENV{donnees/resume}|rainette_afficher_resume)]</div>
    1414                </div>
    1515                <div class="maj">
    16                         <:rainette:derniere_maj|ucfirst:>&nbsp;:[&nbsp;(#ENV{derniere_maj, #VAL{Y-m-d H:i:s}|date}|affdate_heure)]<br/>
    17                         [<:rainette:station_observation|ucfirst:>&nbsp;:&nbsp;(#ENV{station})]
    18                         [(#ENV{station}|non)
     16                        <:rainette:derniere_maj|ucfirst:>&nbsp;:[&nbsp;(#ENV{donnees/derniere_maj, #VAL{Y-m-d H:i:s}|date}|affdate_heure)]<br/>
     17                        [<:rainette:station_observation|ucfirst:>&nbsp;:&nbsp;(#ENV{donnees/station})]
     18                        [(#ENV{donnees/station}|non)
    1919                                [<:rainette:lieu|ucfirst:>&nbsp;:&nbsp;
    20                                         (#RAINETTE_INFOS{#ENV{lieu}, ville, #ENV{service, weather}})
    21                                         [, (#RAINETTE_INFOS{#ENV{lieu}, pays, #ENV{service, weather}})]
     20                                        (#RAINETTE_INFOS{#ENV{extras/lieu}, ville, #ENV{extras/service}})
     21                                        [, (#RAINETTE_INFOS{#ENV{extras/lieu}, pays, #ENV{extras/service}})]
    2222                                ]
    2323                        ]
     
    2727        <ul class="details">
    2828                <li><span><:rainette:vent|ucfirst:></span>
    29                 [(#ENV{vitesse_vent}|rainette_afficher_unite{vitesse, -1, #ENV{service, weather}})]
    30                 [ - (#ENV{direction_vent}|rainette_afficher_direction)]</li>
     29                [(#ENV{donnees/vitesse_vent}|rainette_afficher_unite{vitesse, -1, #ENV{extras/service}})]
     30                [ - (#ENV{donnees/direction_vent}|rainette_afficher_direction)]</li>
    3131                <li><span><:rainette:humidite|ucfirst:></span>
    32                 [(#ENV{humidite}|rainette_afficher_unite{pourcentage, -1, #ENV{service, weather}})]</li>
     32                [(#ENV{donnees/humidite}|rainette_afficher_unite{pourcentage, -1, #ENV{extras/service}})]</li>
    3333                <li><span><:rainette:pression|ucfirst:></span>
    34                 [(#ENV{pression}|rainette_afficher_unite{pression, -1, #ENV{service, weather}})]
    35                 [ (#ENV{tendance_pression}|rainette_afficher_tendance{icone})]</li>
     34                [(#ENV{donnees/pression}|rainette_afficher_unite{pression, -1, #ENV{extras/service}})]
     35                [ (#ENV{donnees/tendance_pression}|rainette_afficher_tendance{icone})]</li>
    3636                [<li><span><:rainette:point_rosee|ucfirst:></span>
    37                 (#ENV{point_rosee}|rainette_afficher_unite{temperature, -1, #ENV{service, weather}})</li>]
     37                (#ENV{donnees/point_rosee}|rainette_afficher_unite{temperature, -1, #ENV{extras/service}})</li>]
    3838                [<li><span><:rainette:visibilite|ucfirst:></span>
    39                 (#ENV{visibilite}|rainette_afficher_unite{distance, -1, #ENV{service, weather}})</li>]
     39                (#ENV{donnees/visibilite}|rainette_afficher_unite{distance, -1, #ENV{extras/service}})</li>]
    4040        </ul>
    4141
  • _plugins_/rainette/trunk/modeles/inc-credits.html

    r70856 r94614  
    33 -->
    44]
    5 #SET{nom_service, #VAL{rainette:titre_service_}|concat{#ENV{service}}|_T}
     5#SET{nom_service, #VAL{rainette:titre_service_}|concat{#ENV{extras/service}}|_T}
    66<div class="rainette_credits[ (#ENV{classe_div})]">
    7         [<a href="(#ENV{credits/lien})"[ title=(#ENV{credits/titre})][ class=(#ENV{classe})] target="_blank">
    8         [(#ENV{credits/logo}|oui)
    9                 [(#CHEMIN_IMAGE{#ENV{credits/logo}}|balise_img{'logo service'})]
     7        [<a href="(#ENV{extras/credits/lien})"[ title=(#ENV{extras/credits/titre})][ class=(#ENV{classe})] target="_blank">
     8        [(#ENV{extras/credits/logo}|oui)
     9                [(#CHEMIN_IMAGE{#ENV{extras/credits/logo}}|balise_img{'logo service'})]
    1010        ]
    11         [(#ENV{credits/logo}|non)
     11        [(#ENV{extras/credits/logo}|non)
    1212                [(#ENV{texte, info}|=={info}|oui)<:rainette:info_credits{service=#GET{nom_service}}:>]
    1313                [(#ENV{texte, info}|=={service}|oui)#GET{nom_service}]
  • _plugins_/rainette/trunk/modeles/infos_ville.html

    r94404 r94614  
    11[(#REM)<!--
    22        Ce sous-modele est celui utilise par defaut par Rainette pour presenter les conditions temps reel d'une ville
    3         Il est appelee par le filtre rainette_coasser
     3        Il est appelee par le filtre rainette_coasser.
     4        Il n'est pas besoin d'utiliser des valeurs par défaut pour la balise #ENV car cela est géré en amont par le filtre.
    45 -->
    56]
    67<div class="rainette_infos">
    7         <h2 class="ville">[(#ENV{ville})[, (#ENV{pays})]]</h2>
     8        <h2 class="ville">[(#ENV{donnees/ville})[, (#ENV{donnees/pays})]]</h2>
    89        <ul class="coordonnees">
    9                 <li><:rainette:longitude|ucfirst:>&nbsp;:[&nbsp;(#ENV{longitude}|rainette_afficher_unite{angle, 2, #ENV{service, weather}})</li>]
    10                 <li><:rainette:latitude|ucfirst:>&nbsp;:[&nbsp;(#ENV{latitude}|rainette_afficher_unite{angle, 2, #ENV{service, weather}})</li>]
    11                 [<li><:rainette:region|ucfirst:>&nbsp;:&nbsp;(#ENV{region})</li>]
     10                <li><:rainette:longitude|ucfirst:>&nbsp;:[&nbsp;(#ENV{donnees/longitude}|rainette_afficher_unite{angle, 2, #ENV{extras/service}})</li>]
     11                <li><:rainette:latitude|ucfirst:>&nbsp;:[&nbsp;(#ENV{donnees/latitude}|rainette_afficher_unite{angle, 2, #ENV{extras/service}})</li>]
     12                [<li><:rainette:region|ucfirst:>&nbsp;:&nbsp;(#ENV{donnees/region})</li>]
    1213        </ul>
    1314
  • _plugins_/rainette/trunk/modeles/previsions_24h.html

    r94404 r94614  
    55 -->]
    66#SET{periode, 0}
     7<BOUCLE_previsions_24h(DATA) {source table, #ENV{donnees}}{par cle}{#ENV{premier_jour}, #ENV{nombre_jours}}>
    78<div class="rainette_previsions_24h">
    8         <div class="jour">[(#ENV{date}|nom_jour|ucfirst)]</div>
    9         <div class="date">[(#ENV{date}|affdate_jourcourt)]</div>
     9        <div class="jour">[(#VALEUR{date}|nom_jour|ucfirst)]</div>
     10        <div class="date">[(#VALEUR{date}|affdate_jourcourt)]</div>
    1011        <div class="contenu">
    11                 <div class="icone">[(#ENV{#GET{periode}/icone}|rainette_afficher_icone{petit})]</div>
    12                 <div class="resume">[(#ENV{#GET{periode}/resume}|rainette_afficher_resume)]</div>
     12                <div class="icone">[(#VALEUR{#GET{periode}/icone}|rainette_afficher_icone{petit})]</div>
     13                <div class="resume">[(#VALEUR{#GET{periode}/resume}|rainette_afficher_resume)]</div>
    1314                <div class="t_reelle">
    1415                        [[(#GET{periode}|=={0}|?{<:rainette:temperature_max|ucfirst:>, <:rainette:nuit|ucfirst:>})]
    15                         &nbsp;(#ENV{#GET{periode}/temperature_max}|rainette_afficher_unite{temperature, -1, #ENV{service, weather}})<br/>]
     16                        &nbsp;(#VALEUR{#GET{periode}/temperature_max}|rainette_afficher_unite{temperature, -1, #ENV{extras/service}})<br/>]
    1617                        [<:rainette:temperature_min|ucfirst:>
    17                         &nbsp;(#ENV{#GET{periode}/temperature_min}|rainette_afficher_unite{temperature, -1, #ENV{service, weather}})<br/>]
     18                        &nbsp;(#VALEUR{#GET{periode}/temperature_min}|rainette_afficher_unite{temperature, -1, #ENV{extras/service}})<br/>]
    1819                </div>
    1920                <div class="details">
     
    2122                                [<li>
    2223                                        <span><:rainette:vent|ucfirst:></span><br />
    23                                         (#ENV{#GET{periode}/vitesse_vent}|rainette_afficher_unite{vitesse, -1, #ENV{service, weather}})
     24                                        (#VALEUR{#GET{periode}/vitesse_vent}|rainette_afficher_unite{vitesse, -1, #ENV{extras/service}})
    2425                                </li>]
    2526                                [<li>
    2627                                        <span><:rainette:precipitation|ucfirst:></span><br />
    27                                         (#ENV{#GET{periode}/precipitation}|rainette_afficher_unite{precipitation, -1, #ENV{service, weather}})
     28                                        (#VALEUR{#GET{periode}/precipitation}|rainette_afficher_unite{precipitation, -1, #ENV{extras/service}})
    2829                                </li>
    2930                                #SET{pluie, oui}]
     
    3132                                [<li>
    3233                                        <span><:rainette:risque_precipitation|ucfirst:></span><br />
    33                                         (#ENV{#GET{periode}/risque_precipitation}|rainette_afficher_unite{pourcentage, -1, #ENV{service, weather}})
     34                                        (#VALEUR{#GET{periode}/risque_precipitation}|rainette_afficher_unite{pourcentage, -1, #ENV{extras/service}})
    3435                                </li>]]
    3536                                [<li>
    3637                                        <span><:rainette:humidite|ucfirst:></span><br />
    37                                         (#ENV{#GET{periode}/humidite}|rainette_afficher_unite{pourcentage, -1, #ENV{service, weather}})
     38                                        (#VALEUR{#GET{periode}/humidite}|rainette_afficher_unite{pourcentage, -1, #ENV{extras/service}})
    3839                                </li>]
    3940                        </ul>
     
    4546                env}
    4647</div>
     48</BOUCLE_previsions_24h>
  • _plugins_/rainette/trunk/modeles/rainette_previsions.html

    r94404 r94614  
    11[(#REM) <!-- Afficher les previsions meteo
    22        - code : le lieu pour lequel on affiche les données méteo
    3         - type : 1_jour (affichage de 24h uniquement) ou x_jours (affichage de x jours)
    4         - jour : le numéro du jour en 1_jour ou le nombre de jours en x_jours
    53        - sous_modele : le sous-modele Rainette ou personnalisé
    64        - service : le service méteo utilisé (weather, wwo, wunderground, owm)
    75 -->]
    8 [(#ENV{code}|rainette_coasser_previsions{
    9                                 #ENV{type, 1_jour},
    10                                 #ENV{jour,0},
    11                                 #ENV{sous_modele,previsions_12h},
    12                                 #ENV{service, weather}})]
     6#SET{options, #ARRAY}
     7[(#ENV{periodicite}|oui)
     8        [(#SET{options, #GET{options}|array_merge{#ARRAY{periodicite, #ENV{periodicite}}}})]
     9]
     10[(#ENV{premier_jour}|oui)
     11        [(#SET{options, #GET{options}|array_merge{#ARRAY{premier_jour, #ENV{premier_jour}}}})]
     12]
     13[(#ENV{nombre_jours}|oui)
     14        [(#SET{options, #GET{options}|array_merge{#ARRAY{nombre_jours, #ENV{nombre_jours}}}})]
     15]
     16[(#ENV{code}|rainette_coasser{
     17        previsions,
     18        #ENV{sous_modele, previsions_12h},
     19        #ENV{service, weather},
     20        #GET{options}})]
  • _plugins_/rainette/trunk/rainette_fonctions.php

    r94404 r94614  
    4545function calculer_infos($lieu, $type, $service) {
    4646
     47        // Initialisation du retour
     48        $info = '';
     49
    4750        // Traitement des cas ou les arguments sont vides
    48         if (!$lieu) {
    49                 return '';
    50         }
    51         if (!$service) {
    52                 $service = 'weather';
    53         }
    54 
    55         $charger = charger_fonction('charger_meteo', 'inc');
    56         $nom_fichier = $charger($lieu, 'infos', 0, $service);
    57         lire_fichier($nom_fichier, $tableau);
    58         if (!isset($type) or !$type) {
    59                 return $tableau;
    60         } else {
    61                 list(, $donnees) = unserialize($tableau);
    62                 $info = $donnees[strtolower($type)];
    63 
    64                 return $info;
    65         }
     51        if ($lieu) {
     52                if (!$service) {
     53                        $service = 'weather';
     54                }
     55
     56                // Récupération des informations sur le lieu
     57                $charger = charger_fonction('charger_meteo', 'inc');
     58                $nom_cache = $charger($lieu, 'infos', 0, $service);
     59                lire_fichier($nom_cache, $contenu_cache);
     60                if (!isset($type) or !$type) {
     61                        $info = $contenu_cache;
     62                } else {
     63                        $tableau = unserialize($contenu_cache);
     64                        $info = $tableau['donnees'][strtolower($type)];
     65                }
     66        }
     67
     68        return $info;
    6669}
    6770
     
    294297        // Recuperation du tableau des prévisions pour tous les jours disponibles
    295298        $charger = charger_fonction('charger_meteo', 'inc');
    296         $nom_fichier = $charger($lieu, 'previsions', $periodicite, $service);
    297         lire_fichier($nom_fichier, $tableau);
     299        $nom_cache = $charger($lieu, 'previsions', $periodicite, $service);
     300        lire_fichier($nom_cache, $tableau);
    298301        $tableau = unserialize($tableau);
    299302
     
    367370        // Initialisation du retour
    368371        $texte = '';
     372        $tableau = array();
    369373
    370374        // Détermination de la périodicité en fonction du mode et du modèle demandés
     375        $type_modele = 0;
    371376        $periodicite = 0;
     377        $erreur = '';
    372378        if ($mode == 'previsions') {
    373                 $periodicite = 24;
    374         }
    375 
    376         // Récupération du tableau des données météo
    377         $charger = charger_fonction('charger_meteo', 'inc');
    378         $nom_cache = $charger($lieu, $mode, $periodicite, $service);
    379         lire_fichier($nom_cache, $contenu_cache);
    380         $tableau = unserialize($contenu_cache);
    381 
    382         // Séparation des données communes liées au service et au mode et des données météorologiques
    383         $extras = array_shift($tableau);
     379                // Identification de la périodicité à partir du nom du modèle. Cela évite une configuration compliquée.
     380                if (preg_match(',_(1|12|24)h,is', $modele, $match)) {
     381                        $type_modele = intval($match[1]);
     382
     383                        // On verifie que la périodicité demandée explicitement dans l'appel du modèle est ok
     384                        if (isset($options['periodicite'])) {
     385                                $periodicite_explicite = intval($options['periodicite']);
     386                                if (periodicite_compatible($type_modele, $periodicite_explicite)) {
     387                                        $periodicite = $periodicite_explicite;
     388                                } else {
     389                                        $erreur = 'modele_periodicite';
     390                                }
     391                        } else {
     392                                // Dans ce cas, il faut choisir une périodicité en fonction du type du modèle et du service.
     393                                $periodicite = trouver_periodicite($type_modele, $service);
     394                                if (!$periodicite) {
     395                                        $erreur = 'modele_service';
     396                                }
     397                        }
     398                } else {
     399                        // On ne connait pas le type du modèle, donc sa compatibilité.
     400                        // Si la périodicité est passée en argument on l'utilise sans se poser de question.
     401                        // Sinon c'est une erreur car on ne sait pas quelle périodicité est requise
     402                        if (isset($options['periodicite'])) {
     403                                $periodicite = intval($options['periodicite']);
     404                        } else {
     405                                $erreur = 'modele_inutilisable';
     406                        }
     407                }
     408        }
     409
     410        if ($erreur) {
     411                // On prépare un contexte extras minimal pour traiter les erreurs du modèle de façon standard
     412                $extras['erreur'] = $erreur;
     413                $extras['lieu'] = $lieu;
     414                $extras['mode'] = $mode;
     415                $extras['periodicite'] = $periodicite;
     416                $extras['service'] = $service;
     417        } else {
     418                // Récupération du tableau des données météo
     419                $charger = charger_fonction('charger_meteo', 'inc');
     420                $nom_cache = $charger($lieu, $mode, $periodicite, $service);
     421                lire_fichier($nom_cache, $contenu_cache);
     422                $tableau = unserialize($contenu_cache);
     423
     424                // Séparation des données communes liées au service et au mode et des données météorologiques
     425                $extras = $tableau['extras'];
     426                $erreur = $extras['erreur'];
     427
     428                if (!$erreur and ($mode == 'previsions')) {
     429                        // Adaptation des données en fonction de la demande et de la périodicité modèle-cache
     430                        $nb_index = count($tableau['donnees']);
     431
     432                        $jour1 = 0;
     433                        if (isset($options['premier_jour'])) {
     434                                $jour1 = intval($options['premier_jour']) < $nb_index
     435                                        ? intval($options['premier_jour'])
     436                                        : $nb_index -1;
     437                        }
     438
     439                        $nb_jours = $nb_index - $jour1;
     440                        if (isset($options['nombre_jours'])) {
     441                                $nb_jours = ($jour1 + intval($options['nombre_jours']) <= $nb_index)
     442                                        ? intval($options['nombre_jours'])
     443                                        : $nb_index - $jour1;
     444                        }
     445
     446                        $tableau['premier_jour'] = $jour1;
     447                        $tableau['nombre_jours'] = $nb_jours;
     448                }
     449        }
    384450
    385451        // Affichage du message d'erreur ou des données
    386         if ($extras['erreur']) {
     452        if ($erreur) {
    387453                $texte = recuperer_fond('modeles/erreur', $extras);
    388454        } else {
    389                 // Pour les modes "conditions" et "infos" l'ensemble des données météo et extra sont des index
    390                 // associatifs du tableau. On supprime les index [0] et [1].
    391                 if ($mode != 'previsions') {
    392                         $donnees = array_shift($tableau);
    393                         $contexte = array_merge($donnees, $extras);
    394                 } else {
    395                         $index_debut = $options['premier_jour'];
    396                 }
    397                 $texte = recuperer_fond("modeles/$modele", $contexte);
     455                // Appel du modèle avec le contexte complet
     456                $texte = recuperer_fond("modeles/$modele", $tableau);
    398457        }
    399458
     
    401460}
    402461
     462function trouver_periodicite($type_modele, $service) {
     463
     464        static $compatibilite_type_periodicite =array(
     465                24 => array(24, 12),
     466                12 => array(12),
     467                1  => array(1,3,6)
     468        );
     469
     470        // Périodicité initialisée à "non trouvée"
     471        $periodicite = 0;
     472
     473        if (isset($compatibilite_type_periodicite[$type_modele])) {
     474                // Acquérir la configuration statique du service pour connaitre les périodicités horaires supportées
     475                // pour le mode prévisions
     476                include_spip("services/${service}");
     477                $configurer = "${service}_service2configuration";
     478                $configuration = $configurer('previsions');
     479                $periodicites_service = array_keys($configuration['previsions']['periodicites']);
     480
     481                $periodicites_modele = $compatibilite_type_periodicite[$type_modele];
     482                foreach ($periodicites_modele as $_periodicite_modele) {
     483                        if (in_array($_periodicite_modele, $periodicites_service)) {
     484                                $periodicite = $_periodicite_modele;
     485                                break;
     486                        }
     487                }
     488        }
     489
     490        return $periodicite;
     491}
     492
     493
     494function periodicite_compatible($type_modele, $periodicite) {
     495
     496        static $compatibilite_type_periodicite =array(
     497                24 => array(24, 12),
     498                12 => array(12),
     499                1  => array(1,3,6)
     500        );
     501
     502        // Périodicité initialisée à "non trouvée"
     503        $compatible = false;
     504
     505        if (isset($compatibilite_type_periodicite[$type_modele])
     506        and in_array($periodicite, $compatibilite_type_periodicite[$type_modele])) {
     507                $compatible = true;
     508        }
     509
     510        return $compatible;
     511}
     512
     513
    403514include_spip('inc/debusquer');
  • _plugins_/rainette/trunk/rainette_pipelines.php

    r70591 r94614  
    11<?php
    22
    3 if (!defined("_ECRIRE_INC_VERSION")) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46
    57// Insertion des css de Rainette
    6 function rainette_insert_head_css($flux){
     8function rainette_insert_head_css($flux) {
    79        static $done = false;
    810        if (!$done) {
     
    1012                $flux .= '<link rel="stylesheet" href="' . find_in_path('rainette.css') . '" type="text/css" media="all" />';
    1113        }
     14
    1215        return $flux;
    1316}
    14 function rainette_insert_head($flux){
    15         $flux .= rainette_insert_head_css($flux); // au cas ou il n'est pas implemente
     17
     18function rainette_insert_head($flux) {
     19        // au cas ou il n'est pas implemente
     20        $flux .= rainette_insert_head_css($flux);
     21
    1622        return $flux;
    1723}
    18 ?>
  • _plugins_/rainette/trunk/services/owm.php

    r94404 r94614  
    3434        ),
    3535        'previsions'     => array(
    36                 'max_jours'         => 16,
    37                 'periodicites'  => array(24, 3),
    38                 'defaut'            => 24
     36                'periodicites' => array(
     37                        24 => array('max_jours' => 16),
     38                        3  => array('max_jours' => 5)
     39                ),
     40                'defaut'       => 24
    3941        ),
    40         'max_previsions' => 16,
    4142        'langue_service' => 'EN'
    4243);
  • _plugins_/rainette/trunk/services/weather.php

    r94404 r94614  
    3030        ),
    3131        'previsions'     => array(
    32                 'max_jours'             => 10,
    33                 'periodicites'  => array(12),
    34                 'defaut'                => 12
     32                'periodicites' => array(
     33                        12 => array('max_jours' => 10)
     34                ),
     35                'defaut'       => 12
    3536        ),
    3637        'max_previsions' => 10,
  • _plugins_/rainette/trunk/services/wunderground.php

    r94404 r94614  
    3333        ),
    3434        'previsions'        => array(
    35                 'max_jours'         => 10,
    36                 'periodicites'  => array(24, 1),
     35                'periodicites' => array(
     36                        24 => array('max_jours' => 10),
     37                        1  => array('max_jours' => 10)
     38                ),
    3739                'defaut'            => 24
    3840        ),
  • _plugins_/rainette/trunk/services/wwo.php

    r94404 r94614  
    3333        ),
    3434        'previsions'       => array(
    35                 'max_jours'    => 15,
    36                 'periodicites' => array(24, 12, 6, 3, 1),
     35                'periodicites' => array(
     36                        24 => array('max_jours' => 15),
     37                        12 => array('max_jours' => 15),
     38                        6  => array('max_jours' => 15),
     39                        3  => array('max_jours' => 15),
     40                        1  => array('max_jours' => 15)
     41                ),
    3742                'defaut'       => 24
    3843        ),
Note: See TracChangeset for help on using the changeset viewer.