Changeset 69115 in spip-zone


Ignore:
Timestamp:
Jan 20, 2013, 7:03:39 PM (7 years ago)
Author:
eric@…
Message:

Améliorer le traitement des prévisions indisponibles en renvoyant un message d'erreur comme pour les conditions et infos.
On passe les informations extra dans les modèles de prévisions pour une utilisation future (crédits).

Location:
_plugins_/rainette/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rainette/trunk/paquet.xml

    r68675 r69115  
    22        prefix="rainette"
    33        categorie="divers"
    4         version="2.0.12"
     4        version="2.0.13"
    55        etat="dev"
    66        compatibilite="[3.0.0;3.*]"
  • _plugins_/rainette/trunk/rainette_fonctions.php

    r68675 r69115  
    172172function rainette_coasse_previsions($lieu, $type='x_jours', $jour=0, $modele='previsions_24h', $service='weather'){
    173173
    174         if ($type == '1_jour') {
    175                 $charger = charger_fonction('charger_meteo', 'inc');
    176                 $nom_fichier = $charger($lieu, 'previsions', $service);
    177                 lire_fichier($nom_fichier,$tableau);
    178                 $tableau = unserialize($tableau);
    179 
    180                 $nb_jours_previsions = count($tableau) - 1;
    181                 $jour = min($jour, $nb_jours_previsions);
    182 
    183                 // Si jour=0 (aujourd'hui), on complete par le tableau du lendemain matin
    184                 if ($jour == 0) {
    185                         $tableau[$jour]['lever_soleil_demain'] = $tableau[$jour+1]['lever_soleil'];
    186                         $tableau[$jour]['temperature_demain'] = $tableau[$jour+1]['temperature_jour'];
    187                         $tableau[$jour]['code_icone_demain'] = $tableau[$jour+1]['code_icone_jour'];
    188                         $tableau[$jour]['vitesse_vent_demain'] = $tableau[$jour+1]['vitesse_vent_jour'];
    189                         $tableau[$jour]['angle_vent_demain'] = $tableau[$jour+1]['angle_vent_jour'];
    190                         $tableau[$jour]['direction_vent_demain'] = $tableau[$jour+1]['direction_vent_jour'];
    191                         $tableau[$jour]['risque_precipitation_demain'] = $tableau[$jour+1]['risque_precipitation_jour'];
    192                         $tableau[$jour]['humidite_demain'] = $tableau[$jour+1]['humidite_jour'];
    193                 }
    194                 // On ajoute la date de derniere maj
    195                 $tableau[$jour]['derniere_maj'] = $tableau[$nb_jours_previsions]['derniere_maj'];
    196                 $page = recuperer_fond("modeles/$modele", $tableau[$jour]);
    197                 $texte = $page;
    198         }
    199         else if ($type == 'x_jours') {
    200                 $charger = charger_fonction('charger_meteo', 'inc');
    201                 $nom_fichier = $charger($lieu, 'previsions', $service);
    202                 lire_fichier($nom_fichier,$tableau);
    203                 $tableau = unserialize($tableau);
    204 
    205                 $nb_jours_previsions = count($tableau) - 1;
    206                 if ($jour == 0) $jour = $nb_jours_previsions;
    207                 $jour = min($jour, $nb_jours_previsions);
    208 
    209                 $texte = "";
    210                 while (count($tableau) && $jour--){
    211                         $page = recuperer_fond("modeles/$modele", array_shift($tableau));
    212                         $texte .= $page;
    213                 }
    214         }
     174        // Recuperation du tableau des prévisions pour tous les jours disponibles
     175        $charger = charger_fonction('charger_meteo', 'inc');
     176        $nom_fichier = $charger($lieu, 'previsions', $service);
     177        lire_fichier($nom_fichier,$tableau);
     178        $tableau = unserialize($tableau);
     179
     180        // Détermination de l'index final contenant les extra (erreur, date...)
     181        $index_extra = count($tableau) - 1;
     182
     183        // On ajoute le lieu, le mode et le service au contexte fourni au modele
     184        $tableau[$index_extra]['lieu'] = $lieu;
     185        $tableau[$index_extra]['mode'] = 'previsions';
     186        $tableau[$index_extra]['service'] = $service;
     187
     188        if (($tableau[$index_extra]['erreur'])) {
     189                // Affichage du message d'erreur
     190                $texte = recuperer_fond("modeles/erreur", $tableau[$index_extra]);
     191        }
     192        else {
     193                if ($type == '1_jour') {
     194                        // Dans ce cas la variable $jour indique le numéro du jour demandé (0 pour aujourd'hui)
     195                        // Plutôt que de renvoyer une erreur si le numéro du jour est supérieur au nombre de jours en prévisions
     196                        // on renvoie au moins le jour max
     197                        $index_jour = min($jour, $index_extra-1);
     198
     199                        // Si jour=0 (aujourd'hui), on complete par le tableau du lendemain matin
     200                        // afin de gérer le passage des prévisions jour à celles de la nuit
     201                        if ($index_jour == 0) {
     202                                $tableau[$index_jour]['lever_soleil_demain'] = $tableau[$index_jour+1]['lever_soleil'];
     203                                $tableau[$index_jour]['temperature_demain'] = $tableau[$index_jour+1]['temperature_jour'];
     204                                $tableau[$index_jour]['code_icone_demain'] = $tableau[$index_jour+1]['code_icone_jour'];
     205                                $tableau[$index_jour]['vitesse_vent_demain'] = $tableau[$index_jour+1]['vitesse_vent_jour'];
     206                                $tableau[$index_jour]['angle_vent_demain'] = $tableau[$index_jour+1]['angle_vent_jour'];
     207                                $tableau[$index_jour]['direction_vent_demain'] = $tableau[$index_jour+1]['direction_vent_jour'];
     208                                $tableau[$index_jour]['risque_precipitation_demain'] = $tableau[$index_jour+1]['risque_precipitation_jour'];
     209                                $tableau[$index_jour]['humidite_demain'] = $tableau[$index_jour+1]['humidite_jour'];
     210                        }
     211
     212                        // On ajoute les informations extra (date et crédits)
     213                        $contexte = array_merge($tableau[$index_jour], $tableau[$index_extra]);
     214                        $texte = recuperer_fond("modeles/$modele", $contexte);
     215                }
     216                else if ($type == 'x_jours') {
     217                        if ($jour == 0) $jour = $index_extra;
     218                        $nb_jours = min($jour, $index_extra);
     219
     220                        $texte = "";
     221                        for ($i = 0; $i < $nb_jours; $i++) {
     222                                $contexte = array_merge($tableau[$i], $tableau[$index_extra]);
     223                                $texte .= recuperer_fond("modeles/$modele", $contexte);
     224                        }
     225                }
     226        }
     227
    215228        return $texte;
    216229}
  • _plugins_/rainette/trunk/services/weather.php

    r68675 r69115  
    5858function weather_flux2previsions($flux, $lieu) {
    5959        $tableau = array();
     60        $index = 0;
     61
    6062        $n = spip_xml_match_nodes(",^dayf,",$flux,$previsions);
    6163        if ($n==1){
     
    6466                $date_maj = $previsions['lsup'][0];
    6567                $date_maj = strtotime(preg_replace(',\slocal\s*time\s*,ims','',$date_maj));
    66                 $index = 0;
    6768                foreach($previsions as $day=>$p){
    6869                        if (preg_match(",day\s*d=['\"?]([0-9]+),Uims",$day,$regs)){
Note: See TracChangeset for help on using the changeset viewer.