Changeset 91663 in spip-zone


Ignore:
Timestamp:
Sep 6, 2015, 3:03:02 PM (4 years ago)
Author:
eric@…
Message:

Suite du patch sur la date de mise à jour pour Weather avec la correction des prévisions.

Location:
_plugins_/rainette/trunk
Files:
2 edited

Legend:

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

    r91646 r91663  
    22        prefix="rainette"
    33        categorie="divers"
    4         version="2.2.1"
     4        version="2.2.2"
    55        etat="test"
    66        compatibilite="[3.0.11;3.1.*]"
  • _plugins_/rainette/trunk/services/weather.php

    r91646 r91663  
    7373                $previsions = reset($previsions['dayf']);
    7474                // recuperer la date de debut des previsions (c'est la date de derniere maj)
    75                 $date_maj = $previsions['lsup'][0];
    76                 $date_maj = strtotime(preg_replace(',\slocal\s*time\s*,ims','',$date_maj));
     75                $date_service = $previsions['lsup'][0];
     76                // Certaines abréviations de fuseau ne sont pas reconnues par date_create suivant la configuration du serveur
     77                // http. On supprime cette information avant le date_create qui produit un timezone erroné mais qui ne genera
     78                // pas le format ensuite.
     79                if (!$date_maj = date_create($date_service)) {
     80                        $elements_date = explode(' ', $date_service);
     81                        array_pop($elements_date);
     82                        $date_service = implode(' ', $elements_date);
     83                        $date_maj = date_create($date_service);
     84                }
     85                // On réinitialise la date de prévision à partir juste du jour afin d'avoir un time à 0
     86                $date_prevision = date_create($elements_date[0]);
    7787                foreach($previsions as $day=>$p){
    7888                        if (preg_match(",day\s*d=['\"?]([0-9]+),Uims",$day,$regs)){
    79                                 $date_stamp = $date_maj+$regs[1]*24*3600;
    80                                 $p = reset($p);
    8189                                // Index du jour et date du jour
    8290                                $tableau[$index]['index'] = $index;
    83                                 $tableau[$index]['date'] = date('Y-m-d',$date_stamp);
     91                                $interval = new DateInterval("P{$regs[1]}D");
     92                                $date_jour = date_add($date_prevision, $interval);
     93                                $tableau[$index]['date'] = date_format($date_jour, 'Y-m-d');
     94
     95                                $p = reset($p);
     96
    8497                                // Date complete des lever/coucher du soleil
    85                                 $date = getdate($date_stamp);
    86                                 $heure = getdate(strtotime($p['sunr'][0]));
    87                                 $sun = mktime($heure['hours'],$heure['minutes'],0,$date['mon'],$date['mday'],$date['year']);
    88                                 $tableau[$index]['lever_soleil'] = date('Y-m-d H:i:s',$sun);
    89                                 $heure = getdate(strtotime($p['suns'][0]));
    90                                 $sun = mktime($heure['hours'],$heure['minutes'],0,$date['mon'],$date['mday'],$date['year']);
    91                                 $tableau[$index]['coucher_soleil'] = date('Y-m-d H:i:s',$sun);
     98                                list($heure,$am_pm) = explode(' ', $p['sunr'][0]);
     99                                list($heure, $minute) = explode(':', $heure);
     100                                $minute = strval($minute);
     101                                $heure = ($am_pm == 'PM') ? strval($heure) + 12 : strval($heure);
     102                                $interval = new DateInterval("PT${heure}H${minute}M");
     103                                $date_soleil = date_add($date_prevision, $interval);
     104                                $tableau[$index]['lever_soleil'] = date_format($date_soleil, 'Y-m-d H:i:s');
     105
     106                                list($heure,$am_pm) = explode(' ', $p['suns'][0]);
     107                                list($heure, $minute) = explode(':', $heure);
     108                                $minute = strval($minute);
     109                                $heure = ($am_pm == 'PM') ? strval($heure) + 12 : strval($heure);
     110                                $interval = new DateInterval("PT${heure}H${minute}M");
     111                                $date_soleil = date_add($date_prevision, $interval);
     112                                $tableau[$index]['coucher_soleil'] = date_format($date_soleil, 'Y-m-d H:i:s');
     113
    92114                                // Previsions du jour
    93115                                $tableau[$index][0]['temperature_max'] = intval($p['hi'][0]) ? floatval($p['hi'][0]) : '';
     
    138160
    139161        // On stocke en fin de tableau la date de derniere mise a jour et le nombre max de  jours de prévisions
    140         $tableau[$index]['derniere_maj'] = date('Y-m-d H:i:s',$date_maj);
     162        $tableau[$index]['derniere_maj'] = date_format($date_maj,'Y-m-d H:i:s');
    141163        $tableau[$index]['max_jours'] = _RAINETTE_WEATHER_JOURS_PREVISIONS;
    142164
Note: See TracChangeset for help on using the changeset viewer.