Changeset 94614 in spip-zone
- Timestamp:
- Jan 16, 2016, 6:14:00 PM (5 years ago)
- Location:
- _plugins_/rainette/trunk
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/rainette/trunk/inc/charger_meteo.php
r94404 r94614 195 195 196 196 // 3- Compléments standard communs à tous les services mais fonction du mode 197 if ($mode != 'conditions') {198 $donnees['max_previsions'] = $configuration['max_previsions'];199 }200 197 if ($mode == 'conditions') { 201 198 // Calcul du risque uv à partir de l'indice uv si celui-ci est fourni … … 217 214 } 218 215 219 220 216 // 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') 230 227 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 ); 232 236 } else { 233 237 // Traitement des erreurs de flux. On positionne toujours les bloc extra contenant l'erreur à l'index 0, 234 238 // 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 ); 238 244 } 239 245 -
_plugins_/rainette/trunk/inc/debusquer.php
r94404 r94614 1 1 <?php 2 2 3 if (!defined("_ECRIRE_INC_VERSION")) return; 3 if (!defined('_ECRIRE_INC_VERSION')) { 4 return; 5 } 4 6 5 if (!defined('_RAINETTE_DEBUG')) 6 define ('_RAINETTE_DEBUG', false); 7 if (!defined('_RAINETTE_DEBUG')) { 8 define('_RAINETTE_DEBUG', false); 9 } 7 10 8 if (!defined('_RAINETTE_DEBUG_PREVISIONS')) 11 if (!defined('_RAINETTE_DEBUG_PREVISIONS')) { 9 12 define('_RAINETTE_DEBUG_PREVISIONS', 'index:date:lever_soleil:coucher_soleil:vitesse_vent:angle_vent:direction_vent:temperature_max:temperature_min: 10 13 risque_precipitation:precipitation:humidite:pression:code_meteo:icon_meteo:desc_meteo:periode:icone:resume'); 11 if (!defined('_RAINETTE_DEBUG_CONDITIONS')) 14 } 15 if (!defined('_RAINETTE_DEBUG_CONDITIONS')) { 12 16 define('_RAINETTE_DEBUG_CONDITIONS', 13 17 'Données d\'observation:derniere_maj/station 14 18 |Températures:temperature_reelle/temperature_ressentie 15 19 |Données anémométriques:vitesse_vent/angle_vent/direction_vent … … 17 21 |États météorologiques natifs:code_meteo/icon_meteo/desc_meteo 18 22 |États météorologiques calculés:icone/resume/periode'); 19 if (!defined('_RAINETTE_DEBUG_INFOS')) 23 } 24 if (!defined('_RAINETTE_DEBUG_INFOS')) { 20 25 define('_RAINETTE_DEBUG_INFOS', 21 26 'Lieu:ville/region 22 27 |Coordonnées:longitude/latitude 23 28 |Démographie:population'); 24 if (!defined('_RAINETTE_DEBUG_TYPE_UNITE')) 29 } 30 if (!defined('_RAINETTE_DEBUG_TYPE_UNITE')) { 25 31 define('_RAINETTE_DEBUG_TYPE_UNITE', 26 32 'population:population 27 33 |temperature:temperature_reelle,temperature_ressentie,point_rosee,temperature_max,temperature_min 28 34 |vitesse:vitesse_vent … … 33 39 |precipitation:precipitation 34 40 |indice:indice_uv'); 41 } 35 42 36 43 37 function rainette_dbg_afficher_cache($lieu, $mode ='previsions', $service='weather') {44 function rainette_dbg_afficher_cache($lieu, $mode = 'previsions', $service = 'weather') { 38 45 $debug = ''; 39 46 40 47 // Recuperation du tableau des conditions courantes 41 if (_RAINETTE_DEBUG ANDfunction_exists('bel_env')) {48 if (_RAINETTE_DEBUG and function_exists('bel_env')) { 42 49 $charger = charger_fonction('charger_meteo', 'inc'); 43 50 $nom_fichier = $charger($lieu, $mode, $service); … … 51 58 // Pour les prévisions les informations communes sont stockées dans un index 52 59 // supplémentaire en fin de tableau 53 $index = count($tableau) -1;60 $index = count($tableau) - 1; 54 61 $tableau[$index]['lieu'] = $lieu; 55 62 $tableau[$index]['mode'] = $mode; 56 63 $tableau[$index]['service'] = $service; 57 } 58 else { 64 } else { 59 65 $tableau['lieu'] = $lieu; 60 66 $tableau['mode'] = $mode; … … 70 76 71 77 72 function rainette_dbg_comparer_services($mode ='conditions', $jeu=array()) {78 function rainette_dbg_comparer_services($mode = 'conditions', $jeu = array()) { 73 79 $debug = array(); 74 80 75 if (!$mode) 81 if (!$mode) { 76 82 $mode = 'conditions'; 83 } 77 84 78 85 $donnees = constant('_RAINETTE_DEBUG_' . strtoupper($mode)); … … 80 87 81 88 if ($donnees) { 82 if (!$jeu) 89 if (!$jeu) { 83 90 $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 } 88 97 89 98 // Recuperation du tableau des conditions courantes 90 foreach ($jeu as $_service => $_lieu) {99 foreach ($jeu as $_service => $_lieu) { 91 100 $charger = charger_fonction('charger_meteo', 'inc'); 92 101 $nom_fichier = $charger($_lieu, $mode, $_service); 93 102 if ($nom_fichier) { 94 103 $contenu = ''; 95 lire_fichier($nom_fichier, $contenu);104 lire_fichier($nom_fichier, $contenu); 96 105 $tableau = unserialize($contenu); 97 106 if ($tableau) { 98 foreach ($tableau as $_donnee => $_valeur) {107 foreach ($tableau as $_donnee => $_valeur) { 99 108 $type = gettype($tableau[$_donnee]); 100 109 $debug[$_donnee][$_service]['valeur'] = $_valeur; 101 110 $debug[$_donnee][$_service]['type'] = $type; 102 if ($_donnee != 'erreur') 111 if ($_donnee != 'erreur') { 103 112 $debug[$_donnee][$_service]['erreur'] = ($type === 'NULL') ? 'nonapi' : ($_valeur === '' ? 'erreur' : ''); 104 else113 } else { 105 114 $debug[$_donnee][$_service]['erreur'] = $_valeur ? 'erreur' : ''; 115 } 106 116 } 107 117 } … … 114 124 115 125 116 function rainette_dbg_afficher_donnee($donnee, $valeur, $type_php, $service ='weather') {126 function rainette_dbg_afficher_donnee($donnee, $valeur, $type_php, $service = 'weather') { 117 127 static $types_unite = array(); 118 128 $texte = ''; … … 123 133 list($type, $donnees) = explode(':', trim($_config_type)); 124 134 foreach (explode(',', $donnees) as $_donnee) { 125 135 $types_unite[$_donnee] = $type; 126 136 } 127 137 } … … 132 142 $texte = '<del>API</del>'; 133 143 $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 { 139 148 $texte = $valeur ? $valeur : 'Ok'; 140 149 } 141 } 142 elseif ($type_php === 'array') { 150 } elseif ($type_php === 'array') { 143 151 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); 145 153 } 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; 149 156 } 150 157 $texte .= "<br /><em>${type_php}</em>"; … … 152 159 return $texte; 153 160 } 154 155 ?> -
_plugins_/rainette/trunk/inc/phraser.php
r79738 r94614 1 1 <?php 2 2 3 if (!defined("_ECRIRE_INC_VERSION")) return; 3 if (!defined('_ECRIRE_INC_VERSION')) { 4 return; 5 } 4 6 5 7 /** 6 8 * @param string $url 7 9 * @param string $utiliser_namespace 10 * 8 11 * @return array 9 12 */ 10 function url2flux_xml($url, $utiliser_namespace ='false') {13 function url2flux_xml($url, $utiliser_namespace = 'false') { 11 14 12 15 // Acquisition des données spécifiées par l'url … … 24 27 /** 25 28 * @param string $url 29 * 26 30 * @return array 27 31 */ … … 37 41 return $json; 38 42 } 39 40 ?> -
_plugins_/rainette/trunk/lang/paquet-rainette_fr.php
r83725 r94614 1 1 <?php 2 // This is a SPIP language file -- Ceci est un fichier langue de SPIP 2 3 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; 4 if (!defined('_ECRIRE_INC_VERSION')) { 5 return; 6 } 12 7 13 8 $GLOBALS[$GLOBALS['idx_lang']] = array( 14 9 15 // R16 '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. 17 12 18 Ce plugin permet d\'afficher les conditions et les prévisions météorologiques d\'une ville donnée à partir du flux xmlfourni par un des services méteorologiques supportés.13 Ce 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. 19 14 Il ne stocke aucune information en base de données ni ne gère le choix des villes. 20 15 21 16 L\'affichage des données météorologiques se fait principalement via l\'utilisation de modèles dans les squelettes. Le plugin propose des 22 17 modè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...).18 soit via la balise <code>#RAINETTE_INFOS</code>. Tous les affichages proposés par Rainette sont personnalisables (icônes, libellés, unités, présentation...). 24 19 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', 20 Une 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', 29 22 ); 30 ?> -
_plugins_/rainette/trunk/modeles/conditions_tempsreel.html
r94404 r94614 7 7 <div class="statut"> 8 8 <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:> :[ (#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:> :[ (#ENV{donnees/temperature_ressentie}|rainette_afficher_unite{temperature, -1, #ENV{extras/service}})]<br/></div> 12 12 <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> 14 14 </div> 15 15 <div class="maj"> 16 <:rainette:derniere_maj|ucfirst:> :[ (#ENV{d erniere_maj, #VAL{Y-m-d H:i:s}|date}|affdate_heure)]<br/>17 [<:rainette:station_observation|ucfirst:> : (#ENV{ station})]18 [(#ENV{ station}|non)16 <:rainette:derniere_maj|ucfirst:> :[ (#ENV{donnees/derniere_maj, #VAL{Y-m-d H:i:s}|date}|affdate_heure)]<br/> 17 [<:rainette:station_observation|ucfirst:> : (#ENV{donnees/station})] 18 [(#ENV{donnees/station}|non) 19 19 [<:rainette:lieu|ucfirst:> : 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}})] 22 22 ] 23 23 ] … … 27 27 <ul class="details"> 28 28 <li><span><:rainette:vent|ucfirst:></span> 29 [(#ENV{ vitesse_vent}|rainette_afficher_unite{vitesse, -1, #ENV{service, weather}})]30 [ - (#ENV{d irection_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> 31 31 <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> 33 33 <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> 36 36 [<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>] 38 38 [<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>] 40 40 </ul> 41 41 -
_plugins_/rainette/trunk/modeles/inc-credits.html
r70856 r94614 3 3 --> 4 4 ] 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} 6 6 <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'})] 10 10 ] 11 [(#ENV{ credits/logo}|non)11 [(#ENV{extras/credits/logo}|non) 12 12 [(#ENV{texte, info}|=={info}|oui)<:rainette:info_credits{service=#GET{nom_service}}:>] 13 13 [(#ENV{texte, info}|=={service}|oui)#GET{nom_service}] -
_plugins_/rainette/trunk/modeles/infos_ville.html
r94404 r94614 1 1 [(#REM)<!-- 2 2 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. 4 5 --> 5 6 ] 6 7 <div class="rainette_infos"> 7 <h2 class="ville">[(#ENV{ ville})[, (#ENV{pays})]]</h2>8 <h2 class="ville">[(#ENV{donnees/ville})[, (#ENV{donnees/pays})]]</h2> 8 9 <ul class="coordonnees"> 9 <li><:rainette:longitude|ucfirst:> :[ (#ENV{ longitude}|rainette_afficher_unite{angle, 2, #ENV{service, weather}})</li>]10 <li><:rainette:latitude|ucfirst:> :[ (#ENV{ latitude}|rainette_afficher_unite{angle, 2, #ENV{service, weather}})</li>]11 [<li><:rainette:region|ucfirst:> : (#ENV{ region})</li>]10 <li><:rainette:longitude|ucfirst:> :[ (#ENV{donnees/longitude}|rainette_afficher_unite{angle, 2, #ENV{extras/service}})</li>] 11 <li><:rainette:latitude|ucfirst:> :[ (#ENV{donnees/latitude}|rainette_afficher_unite{angle, 2, #ENV{extras/service}})</li>] 12 [<li><:rainette:region|ucfirst:> : (#ENV{donnees/region})</li>] 12 13 </ul> 13 14 -
_plugins_/rainette/trunk/modeles/previsions_24h.html
r94404 r94614 5 5 -->] 6 6 #SET{periode, 0} 7 <BOUCLE_previsions_24h(DATA) {source table, #ENV{donnees}}{par cle}{#ENV{premier_jour}, #ENV{nombre_jours}}> 7 8 <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> 10 11 <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> 13 14 <div class="t_reelle"> 14 15 [[(#GET{periode}|=={0}|?{<:rainette:temperature_max|ucfirst:>, <:rainette:nuit|ucfirst:>})] 15 (# ENV{#GET{periode}/temperature_max}|rainette_afficher_unite{temperature, -1, #ENV{service, weather}})<br/>]16 (#VALEUR{#GET{periode}/temperature_max}|rainette_afficher_unite{temperature, -1, #ENV{extras/service}})<br/>] 16 17 [<:rainette:temperature_min|ucfirst:> 17 (# ENV{#GET{periode}/temperature_min}|rainette_afficher_unite{temperature, -1, #ENV{service, weather}})<br/>]18 (#VALEUR{#GET{periode}/temperature_min}|rainette_afficher_unite{temperature, -1, #ENV{extras/service}})<br/>] 18 19 </div> 19 20 <div class="details"> … … 21 22 [<li> 22 23 <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}}) 24 25 </li>] 25 26 [<li> 26 27 <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}}) 28 29 </li> 29 30 #SET{pluie, oui}] … … 31 32 [<li> 32 33 <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}}) 34 35 </li>]] 35 36 [<li> 36 37 <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}}) 38 39 </li>] 39 40 </ul> … … 45 46 env} 46 47 </div> 48 </BOUCLE_previsions_24h> -
_plugins_/rainette/trunk/modeles/rainette_previsions.html
r94404 r94614 1 1 [(#REM) <!-- Afficher les previsions meteo 2 2 - 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_jours5 3 - sous_modele : le sous-modele Rainette ou personnalisé 6 4 - service : le service méteo utilisé (weather, wwo, wunderground, owm) 7 5 -->] 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 45 45 function calculer_infos($lieu, $type, $service) { 46 46 47 // Initialisation du retour 48 $info = ''; 49 47 50 // 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; 66 69 } 67 70 … … 294 297 // Recuperation du tableau des prévisions pour tous les jours disponibles 295 298 $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); 298 301 $tableau = unserialize($tableau); 299 302 … … 367 370 // Initialisation du retour 368 371 $texte = ''; 372 $tableau = array(); 369 373 370 374 // Détermination de la périodicité en fonction du mode et du modèle demandés 375 $type_modele = 0; 371 376 $periodicite = 0; 377 $erreur = ''; 372 378 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 } 384 450 385 451 // Affichage du message d'erreur ou des données 386 if ($e xtras['erreur']) {452 if ($erreur) { 387 453 $texte = recuperer_fond('modeles/erreur', $extras); 388 454 } 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); 398 457 } 399 458 … … 401 460 } 402 461 462 function 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 494 function 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 403 514 include_spip('inc/debusquer'); -
_plugins_/rainette/trunk/rainette_pipelines.php
r70591 r94614 1 1 <?php 2 2 3 if (!defined("_ECRIRE_INC_VERSION")) return; 3 if (!defined('_ECRIRE_INC_VERSION')) { 4 return; 5 } 4 6 5 7 // Insertion des css de Rainette 6 function rainette_insert_head_css($flux) {8 function rainette_insert_head_css($flux) { 7 9 static $done = false; 8 10 if (!$done) { … … 10 12 $flux .= '<link rel="stylesheet" href="' . find_in_path('rainette.css') . '" type="text/css" media="all" />'; 11 13 } 14 12 15 return $flux; 13 16 } 14 function rainette_insert_head($flux){ 15 $flux .= rainette_insert_head_css($flux); // au cas ou il n'est pas implemente 17 18 function rainette_insert_head($flux) { 19 // au cas ou il n'est pas implemente 20 $flux .= rainette_insert_head_css($flux); 21 16 22 return $flux; 17 23 } 18 ?> -
_plugins_/rainette/trunk/services/owm.php
r94404 r94614 34 34 ), 35 35 '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 39 41 ), 40 'max_previsions' => 16,41 42 'langue_service' => 'EN' 42 43 ); -
_plugins_/rainette/trunk/services/weather.php
r94404 r94614 30 30 ), 31 31 '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 35 36 ), 36 37 'max_previsions' => 10, -
_plugins_/rainette/trunk/services/wunderground.php
r94404 r94614 33 33 ), 34 34 '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 ), 37 39 'defaut' => 24 38 40 ), -
_plugins_/rainette/trunk/services/wwo.php
r94404 r94614 33 33 ), 34 34 '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 ), 37 42 'defaut' => 24 38 43 ),
Note: See TracChangeset
for help on using the changeset viewer.