Browse Source

Changement de gestion du service par défaut :

- Weather n'étant plus disponible après des années de service on passe à OpenWeatherMap comme service par défaut mais celui-ci nécessite une clé (gratuite)
- Le service par défaut est donné par une fonction qui s'appuie sur la constante _RAINETTE_SERVICE_DEFAUT
- Cette constante peut-être surchargée dans le mes_options.php du site ou sinon lors de chaque appel des modèles en passant le service désiré.
svn/root/tags/v3.10.0
Eric Lupinacci 1 year ago
parent
commit
8200acf0bb
14 changed files with 124 additions and 114 deletions
  1. +1
    -1
      demo/rainette.html
  2. +8
    -4
      formulaires/configurer_rainette_service.php
  3. +30
    -30
      inc/meteo_charger.php
  4. +13
    -10
      inc/rainette_debusquer.php
  5. +2
    -2
      modeles/rainette_conditions.html
  6. +2
    -2
      modeles/rainette_infos.html
  7. +2
    -2
      modeles/rainette_previsions.html
  8. +1
    -1
      noisettes/meteo_conditions.yaml
  9. +1
    -1
      noisettes/meteo_previsions.yaml
  10. +1
    -1
      paquet.xml
  11. +3
    -2
      prive/squelettes/contenu/configurer_rainette.html
  12. +1
    -1
      prive/squelettes/inclure/inc-rainette_navigation.html
  13. +58
    -56
      rainette_fonctions.php
  14. +1
    -1
      saisies/service_meteo.html

+ 1
- 1
demo/rainette.html View File

@ -8,7 +8,7 @@
#INSERT_HEAD
</head>
#SET{service, #ENV{service, weather}}
#SET{service, #ENV{service, #VAL|rainette_service_defaut}}
#SET{mode, #ENV{mode, conditions}}
#SET{jeu, #VAL|rainette_debug_jeu_defaut}
#SET{lieu, #ENV{ville, #GET{jeu/#GET{service}}}}


+ 8
- 4
formulaires/configurer_rainette_service.php View File

@ -1,7 +1,6 @@
<?php
/**
* Gestion du formulaire de configuration du plugin Rainette.
*
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
@ -12,13 +11,19 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* et son état d'exécution au formulaire.
*
* @param string $service
* Alias du service.
* Alias du service.
*
* @return array
* Tableau des données à charger par le formulaire.
* Tableau des données à charger par le formulaire.
*/
function formulaires_configurer_rainette_service_charger($service) {
// On récupère le service par défaut si besoin
if (!$service) {
include_spip('rainette_fonctions');
$service = rainette_service_defaut();
}
// Récupération et normalisation des données de configuration utilisateur.
include_spip("services/${service}");
$configurer = "${service}_service2configuration";
@ -53,7 +58,6 @@ function formulaires_configurer_rainette_service_charger($service) {
}
// Gestion des thèmes locaux et distants.
include_spip('rainette_fonctions');
$valeurs['_themes']['distants'] = rainette_lister_themes($service, 'api');
$valeurs['_themes']['locaux'] = rainette_lister_themes($service, 'local');
$valeurs['_themes']['weather'] = !in_array($service, array('weather', 'owm', 'weatherbit'))


+ 30
- 30
inc/meteo_charger.php View File

@ -9,7 +9,6 @@ if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Renvoyer le contenu du fichier cache des données météos correspondant au lieu et au type de données choisis
* après l'avoir éventuellement mis à jour.
@ -23,33 +22,33 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* @uses indice2risque_uv()
*
* @param string $lieu
* Le lieu concerné par la méteo exprimé selon les critères requis par le service.
* Le lieu concerné par la méteo exprimé selon les critères requis par le service.
* @param string $mode
* Le type de données météorologiques demandé :
* - `conditions`, la valeur par défaut
* - `previsions`
* - `infos`
* @param int $periodicite
* La périodicité horaire des prévisions :
* - `24`, les prévisions de la journée
* - `12`, les prévisions du jour et de la nuit
* - `6`, les prévisions de la journée par période de 6h
* - `3`, les prévisions de la journée par période de 3h
* - `1`, les prévisions de la journée pour chaque heure
* - `0`, pour les modes `conditions` et `infos`
* Le type de données météorologiques demandé :
* - `conditions`, la valeur par défaut
* - `previsions`
* - `infos`
* @param int $periodicite
* La périodicité horaire des prévisions :
* - `24`, les prévisions de la journée
* - `12`, les prévisions du jour et de la nuit
* - `6`, les prévisions de la journée par période de 6h
* - `3`, les prévisions de la journée par période de 3h
* - `1`, les prévisions de la journée pour chaque heure
* - `0`, pour les modes `conditions` et `infos`
* @param string $service
* Le nom abrégé du service :
* - `weather` pour le weather.com, la valeur par défaut car elle ne nécessite aucune inscription
* - `wwo` pour World Weather Online
* - `wunderground` pour Wunderground
* - `owm` pour Open Weather Map
* - `apixu` pour APIXU
* - `weatherbit` pour Weatherbit.io
* Le nom abrégé du service :
* - `weather` pour le weather.com, la valeur par défaut car elle ne nécessite aucune inscription
* - `wwo` pour World Weather Online
* - `wunderground` pour Wunderground
* - `owm` pour Open Weather Map
* - `apixu` pour APIXU
* - `weatherbit` pour Weatherbit.io
*
* @return array
* Le contenu du fichier cache contenant les données à jour demandées.
* Le contenu du fichier cache contenant les données à jour demandées.
*/
function inc_meteo_charger_dist($lieu, $mode = 'conditions', $periodicite = 0, $service = 'weather') {
function inc_meteo_charger_dist($lieu, $mode = 'conditions', $periodicite = 0, $service = '') {
// Initialisation du tableau de sortie.
$tableau = array();
@ -62,15 +61,16 @@ function inc_meteo_charger_dist($lieu, $mode = 'conditions', $periodicite = 0, $
$periodicite = 0;
}
if (!$service) {
$service = 'weather';
include_spip('rainette_fonctions');
$service = rainette_service_defaut();
}
// On vérifie d'abord si le service est connu et actif car sinon il est inutile de continuer.
// -- on initialise le bloc d'erreur
$erreur = array(
'type' => '',
'type' => '',
'service' => array(
'code' => '',
'code' => '',
'message' => ''
)
);
@ -82,7 +82,7 @@ function inc_meteo_charger_dist($lieu, $mode = 'conditions', $periodicite = 0, $
// On construit le tableau directement sans passer par un cache.
$tableau = array(
'donnees' => array(),
'extras' => erreur_normaliser_extras($erreur, $lieu, $mode, $periodicite, $service)
'extras' => erreur_normaliser_extras($erreur, $lieu, $mode, $periodicite, $service)
);
} else {
// Service ok :
@ -111,7 +111,7 @@ function inc_meteo_charger_dist($lieu, $mode = 'conditions', $periodicite = 0, $
}
// Construire le tableau identifiant le cache
$cache = cache_normaliser($lieu, $mode, $periodicite, $configuration);
$cache = cache_normaliser($lieu, $mode, $periodicite, $configuration);
// Mise à jour du cache avec les nouvelles données météo si:
// - le fichier cache n'existe pas
@ -250,14 +250,14 @@ function inc_meteo_charger_dist($lieu, $mode = 'conditions', $periodicite = 0, $
// Pour les prévisions l'index 0 à n désigne le jour, il faut donc le conserver
$tableau = array(
'donnees' => ($mode != 'previsions' ? array_shift($tableau) : $tableau),
'extras' => $extras
'extras' => $extras
);
} else {
// Traitement des erreurs de flux. On positionne toujours les bloc extra contenant l'erreur,
// le bloc des données qui est mis à tableau vide dans ce cas à l'index 1.
$tableau = array(
'donnees' => array(),
'extras' => $extras
'extras' => $extras
);
}


+ 13
- 10
inc/rainette_debusquer.php View File

@ -17,7 +17,6 @@ if (!defined('_RAINETTE_DEBUG_CLES_PREVISIONS')) {
define('_RAINETTE_DEBUG_CLES_PREVISIONS', '1');
}
/**
* @param string $lieu
* @param string $mode
@ -25,9 +24,14 @@ if (!defined('_RAINETTE_DEBUG_CLES_PREVISIONS')) {
*
* @return string
*/
function rainette_debug_afficher_cache($lieu, $mode = 'previsions', $service = 'weather') {
function rainette_debug_afficher_cache($lieu, $mode = 'previsions', $service = '') {
// Initialisations : en particulier on récupère le service par défaut si besoin
static $cles_previsions = array();
$debug = '';
if (!$service) {
$service = rainette_service_defaut();
}
// Recuperation du tableau des conditions courantes
include_spip('inc/rainette_normaliser');
@ -64,7 +68,6 @@ function rainette_debug_afficher_cache($lieu, $mode = 'previsions', $service = '
return $debug;
}
/**
* @param string $lieu
* @param string $mode
@ -85,7 +88,6 @@ function rainette_debug_afficher_config() {
return $debug;
}
/**
* @param string $mode
* @param array $jeu
@ -165,7 +167,6 @@ function rainette_debug_comparer_services($mode = 'conditions', $jeu = array())
return $debug;
}
/**
* @param string $donnee
* @param mixed $valeur
@ -175,8 +176,13 @@ function rainette_debug_comparer_services($mode = 'conditions', $jeu = array())
*
* @return string
*/
function rainette_debug_afficher_donnee($donnee, $valeur, $type_php, $type_unite, $service = 'weather') {
function rainette_debug_afficher_donnee($donnee, $valeur, $type_php, $type_unite, $service = '') {
// Initialisations : en particulier on récupère le service par défaut si besoin
$texte = '';
if (!$service) {
$service = rainette_service_defaut();
}
if ($type_php === 'NULL') {
$texte = '<del>API</del>';
@ -203,7 +209,6 @@ function rainette_debug_afficher_donnee($donnee, $valeur, $type_php, $type_unite
* @return array
*/
function rainette_debug_jeu_defaut() {
$jeu = array();
include_spip('rainette_fonctions');
@ -225,7 +230,6 @@ function rainette_debug_jeu_defaut() {
* @return array
*/
function rainette_debug_afficher_execution() {
$debug = array();
$services = rainette_lister_services();
@ -259,7 +263,6 @@ function rainette_debug_afficher_execution() {
/**
* Fonction permettant de vérifier si la liste des langues de SPIP a changé et qu'il faut modifier la config rainette.
*
*/
function rainette_debug_verifier_langue_manquante() {
include_spip('inc/lang_liste');
@ -268,7 +271,7 @@ function rainette_debug_verifier_langue_manquante() {
$texte = '';
foreach ($GLOBALS['codes_langues'] as $code => $langue) {
if (!array_key_exists($code, $GLOBALS['rainette_config']['langues_alternatives'])) {
$texte .= "code manquant $code<br />";
$texte .= "code manquant ${code}<br />";
}
}


+ 2
- 2
modeles/rainette_conditions.html View File

@ -2,9 +2,9 @@
Afficher les conditions météorologiques temps reel
- lieu : le lieu pour lequel on affiche les données méteo
- sous_modele : le sous-modele Rainette ou personnalisé
- service : le service méteo utilisé (weather, wwo, wunderground, owm...)
- service : le service méteo utilisé (weather, wwo, wunderground, owm...) ou chaine vide
-->]
[(#ENV{lieu}|rainette_coasser{
conditions,
#ENV{sous_modele,conditions_tempsreel},
#ENV{service, weather}})]
#ENV{service, ''}})]

+ 2
- 2
modeles/rainette_infos.html View File

@ -2,9 +2,9 @@
Afficher les informations generales sur le lieu
- lieu : le lieu pour lequel on affiche les données méteo
- sous_modele : le sous-modele Rainette ou personnalisé
- service : le service méteo utilisé (weather, wwo, wunderground, owm...)
- service : le service méteo utilisé (weather, wwo, wunderground, owm...) ou chaine vide
-->]
[(#ENV{lieu}|rainette_coasser{
infos,
#ENV{sous_modele, infos_ville},
#ENV{service, weather}})]
#ENV{service, ''}})]

+ 2
- 2
modeles/rainette_previsions.html View File

@ -1,7 +1,7 @@
[(#REM) <!-- Afficher les previsions meteo
- lieu : (obligatoire) - le lieu pour lequel on affiche les données méteo
- sous_modele : (defaut previsions_24h) - le sous-modele Rainette ou personnalisé
- service : (defaut weather) - le service méteo utilisé (weather, wwo, wunderground, owm)
- service : (defaut '') - le service méteo utilisé (weather, wwo, wunderground, owm)
- periodicite : (optionnel) - impose de choisir une périodicité pour les données
- premier_jour : (optionnel, defaut 0) - numéro du jour de 0 (jour courant) à n
- nombre_jours : (optionnel, defaut tous les jours possibles) - nombre de jours à afficher à partir du premier_jour
@ -19,5 +19,5 @@
[(#ENV{lieu}|rainette_coasser{
previsions,
#ENV{sous_modele, previsions_24h},
#ENV{service, weather},
#ENV{service, ''},
#GET{options}})]

+ 1
- 1
noisettes/meteo_conditions.yaml View File

@ -15,7 +15,7 @@ parametres:
options:
nom: 'service'
label: '<:rainette:noisette_label_service:>'
defaut: 'weather'
defaut: ''
cacher_option_intro: 'oui'
-
saisie: 'radio'


+ 1
- 1
noisettes/meteo_previsions.yaml View File

@ -35,7 +35,7 @@ parametres:
options:
nom: 'service'
label: '<:rainette:noisette_label_service:>'
defaut: 'weather'
defaut: ''
cacher_option_intro: 'oui'
-
saisie: 'radio'


+ 1
- 1
paquet.xml View File

@ -1,7 +1,7 @@
<paquet
prefix="rainette"
categorie="divers"
version="3.7.0"
version="3.8.0"
etat="stable"
compatibilite="]3.1.3;3.2.*]"
logo="rainette_logo-64.png"


+ 3
- 2
prive/squelettes/contenu/configurer_rainette.html View File

@ -1,10 +1,11 @@
[(#AUTORISER{configurer}|sinon_interdire_acces)]
#SET{services, #VAL{tableau}|rainette_lister_services}
#SET{titre_service, #GET{services/#ENV{service, weather}}}
#SET{service_choisi, #ENV{service, #VAL|rainette_service_defaut}}
#SET{titre_service, #GET{services/#GET{service_choisi}}}
<h1 class="grostitre">
<:rainette:titre_page_configurer{service=#GET{titre_service}}:>
</h1>
[<div class='ajax'>
(#FORMULAIRE_CONFIGURER_RAINETTE_SERVICE{#ENV{service, weather}})
(#FORMULAIRE_CONFIGURER_RAINETTE_SERVICE{#GET{service_choisi}})
</div>]

+ 1
- 1
prive/squelettes/inclure/inc-rainette_navigation.html View File

@ -6,7 +6,7 @@
(#URL_ECRIRE{configurer_rainette}|parametre_url{service, #CLE}
|lien_ou_expose{
[(#VALEUR)],
[(#ENV{service, weather}|=={#CLE}|et{#ENV{exec}|=={configurer_rainette}})]})
[(#ENV{service, #VAL|rainette_service_defaut}|=={#CLE}|et{#ENV{exec}|=={configurer_rainette}})]})
</li>]
</BOUCLE_navigation_cfg>
</ul>


+ 58
- 56
rainette_fonctions.php View File

@ -4,6 +4,9 @@ if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
if (!defined('_RAINETTE_SERVICE_DEFAUT')) {
define('_RAINETTE_SERVICE_DEFAUT', 'owm');
}
if (!defined('_RAINETTE_ICONES_GRANDE_TAILLE')) {
define('_RAINETTE_ICONES_GRANDE_TAILLE', 110);
}
@ -18,13 +21,12 @@ if (!defined('_RAINETTE_ICONES_PETITE_TAILLE')) {
* @return mixed
*/
function balise_RAINETTE_INFOS($p) {
$lieu = interprete_argument_balise(1, $p);
$lieu = isset($lieu) ? str_replace('\'', '"', $lieu) : '""';
$type_info = interprete_argument_balise(2, $p);
$type_info = isset($type_info) ? str_replace('\'', '"', $type_info) : '""';
$service = interprete_argument_balise(3, $p);
$service = isset($service) ? str_replace('\'', '"', $service) : '"weather"';
$service = isset($service) ? str_replace('\'', '"', $service) : '""';
$p->code = 'calculer_infos(' . $lieu . ', ' . $type_info . ', ' . $service . ')';
$p->interdire_scripts = false;
@ -47,7 +49,7 @@ function calculer_infos($lieu, $type, $service) {
// Traitement des cas ou les arguments sont vides
if ($lieu) {
if (!$service) {
$service = 'weather';
$service = rainette_service_defaut();
}
// Récupération des informations sur le lieu
@ -55,10 +57,8 @@ function calculer_infos($lieu, $type, $service) {
$tableau = $charger($lieu, 'infos', 0, $service);
if (!isset($type) or !$type) {
$info = serialize($tableau);
} else {
if (isset($tableau['donnees'][strtolower($type)])) {
$info = $tableau['donnees'][strtolower($type)];
}
} elseif (isset($tableau['donnees'][strtolower($type)])) {
$info = $tableau['donnees'][strtolower($type)];
}
}
@ -72,7 +72,7 @@ function calculer_infos($lieu, $type, $service) {
* @filtre
*
* @param array $icone
* @param string|int $taille
* @param int|string $taille
* @param array $options
*
* @return string
@ -92,14 +92,14 @@ function rainette_afficher_icone($icone, $taille = 'petit', $options = array())
// Calcul de la taille maximale de l'icone
if ($taille == 'petit') {
$taille_max =_RAINETTE_ICONES_PETITE_TAILLE;
$taille_max = _RAINETTE_ICONES_PETITE_TAILLE;
} elseif ($taille == 'grand') {
$taille_max =_RAINETTE_ICONES_GRANDE_TAILLE;
$taille_max = _RAINETTE_ICONES_GRANDE_TAILLE;
} else {
$taille_max = intval($taille);
}
if (($largeur < $taille_max) or ($hauteur < $taille_max)) {
if (($largeur < $taille_max) or ($hauteur < $taille_max)) {
// Image plus petite que celle par défaut :
// --> Il faut insérer et recadrer l'image dans une image plus grande à la taille par défaut
$source = extraire_attribut(image_recadre($source, $taille_max, $taille_max, 'center', 'transparent'), 'src');
@ -119,22 +119,21 @@ function rainette_afficher_icone($icone, $taille = 'petit', $options = array())
}
/**
*
* @package RAINETTE/AFFICHAGE
*
* @api
* @filtre
*
* @param string|int $resume
* @param int|string $resume
*
* @return string
*/
function rainette_afficher_resume($resume) {
if (is_numeric($resume)) {
// On utilise l'option de _T permettant de savoir si un item existe ou pas
$texte = _T('rainette:meteo_' . $resume, array(), array('force' => false));
if (!$texte) {
$texte = _T('rainette:meteo_na') . " ($resume)";
$texte = _T('rainette:meteo_na') . " (${resume})";
}
} else {
$texte = $resume ? $resume : _T('rainette:meteo_na');
@ -148,19 +147,19 @@ function rainette_afficher_resume($resume) {
* l'affichage dans les modèles.
*
* @package RAINETTE/AFFICHAGE
*
* @api
* @filtre
*
* @param mixed $direction
* La direction soit sous forme d'une valeur numérique entre 0 et 360, soit sous forme
* d'une chaine. Certains services utilisent la chaine "V" pour indiquer une direction
* variable.
* La direction soit sous forme d'une valeur numérique entre 0 et 360, soit sous forme
* d'une chaine. Certains services utilisent la chaine "V" pour indiquer une direction
* variable.
*
* @return string
* La chaine traduite indiquant la direction du vent.
* La chaine traduite indiquant la direction du vent.
*/
function rainette_afficher_direction($direction) {
include_spip('inc/rainette_convertir');
$direction_abregee = angle2direction($direction);
@ -178,31 +177,31 @@ function rainette_afficher_direction($direction) {
* icone).
*
* @package RAINETTE/AFFICHAGE
*
* @api
* @filtre
*
* @param string $tendance_en
* Texte anglais représentant la tendance et récupérée par le service.
* Texte anglais représentant la tendance et récupérée par le service.
* @param string $methode
* Methode d'affichage de la tendance qui prend les valeurs:
* - `texte` : pour afficher un texte en clair décrivant la tendance (méthode par défaut).
* - `symbole` : pour afficher un symbole de flèche (1 caractère) décrivant la tendance.
* Methode d'affichage de la tendance qui prend les valeurs:
* - `texte` : pour afficher un texte en clair décrivant la tendance (méthode par défaut).
* - `symbole` : pour afficher un symbole de flèche (1 caractère) décrivant la tendance.
*
* @return string
*/
function rainette_afficher_tendance($tendance_en, $methode = 'texte') {
$tendance = '';
// Certains textes sont composés de plusieurs mots comme "falling rapidly".
// On en fait un texte unique en remplaçant les espaces par des underscores.
$tendance_en = str_replace(' ', '_', trim($tendance_en));
if (($tendance_en) and ($texte = _T("rainette:tendance_texte_$tendance_en", array(), array('force' => false)))) {
if (($tendance_en) and ($texte = _T("rainette:tendance_texte_${tendance_en}", array(), array('force' => false)))) {
if ($methode == 'texte') {
$tendance = $texte;
} else {
$tendance = _T("rainette:tendance_symbole_$tendance_en");
$tendance = _T("rainette:tendance_symbole_${tendance_en}");
}
}
@ -213,23 +212,25 @@ function rainette_afficher_tendance($tendance_en, $methode = 'texte') {
* Affiche toute donnée météorologique au format numérique avec son unité.
*
* @package RAINETTE/AFFICHAGE
*
* @api
* @filtre
*
* @param int/float $valeur
* La valeur à afficher
* La valeur à afficher
* @param string $type_donnee
* Type de données à afficher parmi 'temperature', 'pourcentage', 'angle', 'pression',
* 'distance', 'vitesse', 'population', 'precipitation'.
* Type de données à afficher parmi 'temperature', 'pourcentage', 'angle', 'pression',
* 'distance', 'vitesse', 'population', 'precipitation'.
* @param int $precision
* Nombre de décimales à afficher pour les réels uniquement ou -1 pour utiliser le défaut.
* @param string $service
* Nombre de décimales à afficher pour les réels uniquement ou -1 pour utiliser le défaut.
* @param string $service
*
* @return string
* La chaine calculée ou le texte désignant une valeur indéterminée ou vide si la valeur est null.
* La chaine calculée ou le texte désignant une valeur indéterminée ou vide si la valeur est null.
*/
function rainette_afficher_unite($valeur, $type_donnee = '', $precision = -1, $service = 'weather') {
function rainette_afficher_unite($valeur, $type_donnee = '', $precision = -1, $service = '') {
// Initialisations : en particulier on récupère le service par défaut si besoin
static $precision_defaut = array(
'temperature' => 0,
'pression' => 1,
@ -241,9 +242,8 @@ function rainette_afficher_unite($valeur, $type_donnee = '', $precision = -1, $s
'vitesse' => 0,
'indice' => 0
);
if (!$service) {
$service = 'weather';
$service = rainette_service_defaut();
}
include_spip('inc/config');
$unite = lire_config("rainette/${service}/unite", 'm');
@ -278,7 +278,6 @@ function rainette_afficher_unite($valeur, $type_donnee = '', $precision = -1, $s
return $valeur_affichee;
}
function rainette_afficher_service($service) {
// Acquérir la configuration statique du service.
@ -290,6 +289,12 @@ function rainette_afficher_service($service) {
}
function rainette_service_defaut() {
return _RAINETTE_SERVICE_DEFAUT;
}
/**
* @param string $mode
* @param bool $actif_uniquement
@ -297,7 +302,6 @@ function rainette_afficher_service($service) {
* @return array|string
*/
function rainette_lister_services($mode = 'tableau', $actif_uniquement = true) {
static $services = array();
if (!isset($service[$mode][$actif_uniquement])) {
@ -348,7 +352,6 @@ function rainette_lister_services($mode = 'tableau', $actif_uniquement = true) {
return $services[$mode][$actif_uniquement];
}
/**
* @param string $mode
* @param int $periodicite
@ -356,7 +359,6 @@ function rainette_lister_services($mode = 'tableau', $actif_uniquement = true) {
* @return array
*/
function rainette_lister_modeles($mode = 'conditions', $periodicite = 24) {
$modeles = array();
// On lit les modèles suivant le mode choisi dans l'ensemble du site.
@ -369,7 +371,7 @@ function rainette_lister_modeles($mode = 'conditions', $periodicite = 24) {
} else {
$pattern = "${mode}_${periodicite}h.*\\.html$";
}
if ($fichiers = find_all_in_path("modeles/", $pattern)) {
if ($fichiers = find_all_in_path('modeles/', $pattern)) {
foreach ($fichiers as $_fichier) {
$modeles[] = strtolower(basename($_fichier, '.html'));
}
@ -378,7 +380,6 @@ function rainette_lister_modeles($mode = 'conditions', $periodicite = 24) {
return $modeles;
}
/**
* @param string $service
* @param string $source
@ -386,7 +387,6 @@ function rainette_lister_modeles($mode = 'conditions', $periodicite = 24) {
* @return array
*/
function rainette_lister_themes($service, $source = 'local') {
static $themes = array();
if (!isset($themes[$service][$source])) {
@ -429,7 +429,6 @@ function rainette_lister_themes($service, $source = 'local') {
return $themes[$service][$source];
}
/**
* @param string $lieu
* @param string $mode
@ -439,7 +438,12 @@ function rainette_lister_themes($service, $source = 'local') {
*
* @return array|string
*/
function rainette_coasser($lieu, $mode = 'conditions', $modele = 'conditions_tempsreel', $service = 'weather', $options = array()) {
function rainette_coasser($lieu, $mode = 'conditions', $modele = 'conditions_tempsreel', $service = '', $options = array()) {
// Initialisations : on récupère le service par défaut si besoin
if (!$service) {
$service = rainette_service_defaut();
}
// Vérification du service et de la cohérence entre le mode, le modèle et la périodicité.
include_spip('inc/rainette_normaliser');
@ -466,15 +470,13 @@ function rainette_coasser($lieu, $mode = 'conditions', $modele = 'conditions_tem
$type_erreur = 'modele_service';
}
}
} else {
} elseif (isset($options['periodicite'])) {
// On ne connait pas le type du modèle, donc sa compatibilité.
// Si la périodicité est passée en argument on l'utilise sans se poser de question.
$periodicite = intval($options['periodicite']);
} else {
// Sinon c'est une erreur car on ne sait pas quelle périodicité est requise
if (isset($options['periodicite'])) {
$periodicite = intval($options['periodicite']);
} else {
$type_erreur = 'modele_inutilisable';
}
$type_erreur = 'modele_inutilisable';
}
}
}
@ -482,16 +484,16 @@ function rainette_coasser($lieu, $mode = 'conditions', $modele = 'conditions_tem
if ($type_erreur) {
// On construit le tableau directement sans appeler la fonction de calcul des données météo.
$erreur = array(
'type' => $type_erreur,
'type' => $type_erreur,
'service' => array(
'code' => '',
'code' => '',
'message' => ''
)
);
$tableau = array(
'donnees' => array(),
'extras' => erreur_normaliser_extras($erreur, $lieu, $mode, $periodicite, $service)
'extras' => erreur_normaliser_extras($erreur, $lieu, $mode, $periodicite, $service)
);
} else {
// Récupération du tableau des données météo
@ -509,7 +511,7 @@ function rainette_coasser($lieu, $mode = 'conditions', $modele = 'conditions_tem
if (isset($options['premier_jour'])) {
$jour1 = intval($options['premier_jour']) < $nb_index
? intval($options['premier_jour'])
: $nb_index -1;
: $nb_index - 1;
}
$nb_jours = $nb_index - $jour1;
@ -537,7 +539,7 @@ function rainette_coasser($lieu, $mode = 'conditions', $modele = 'conditions_tem
$texte = recuperer_fond('modeles/erreur_rainette', $tableau['extras']);
} else {
// Appel du modèle avec le contexte complet
$texte = recuperer_fond("modeles/$modele", $tableau);
$texte = recuperer_fond("modeles/${modele}", $tableau);
}
return $texte;


+ 1
- 1
saisies/service_meteo.html View File

@ -7,6 +7,6 @@
<select name="#ENV{nom}" id="champ_#ENV{nom}"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"] >
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_services_meteo(DATA) {source table, #VAL{tableau}|rainette_lister_services}{par cle}>
[<option value="#CLE"[(#CLE|=={#ENV{valeur,#ENV{defaut, weather}}}|oui) selected="selected"]>(#VALEUR)</option>]
[<option value="#CLE"[(#CLE|=={#ENV{valeur,#ENV{defaut, #VAL|rainette_service_defaut}}}|oui) selected="selected"]>(#VALEUR)</option>]
</BOUCLE_services_meteo>
</select>

Loading…
Cancel
Save