Modification du mode de récupération des régions pour ne plus être dépendant d'une liste fixe
This commit is contained in:
parent
cb1cf8a3f9
commit
bf697ab2de
@ -36,4 +36,68 @@ function liste_regions(){
|
|||||||
'21'=>"Provence-Alpes-Côte d'Azur",
|
'21'=>"Provence-Alpes-Côte d'Azur",
|
||||||
'27'=>"Autre pays" );
|
'27'=>"Autre pays" );
|
||||||
return $tab_regions;
|
return $tab_regions;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************
|
||||||
|
* Le préfixe MES identifie les éléments
|
||||||
|
* défini dans ce fichier mes_fonctions.php
|
||||||
|
***********************************/
|
||||||
|
define("MES", "MES");
|
||||||
|
$GLOBALS[MES] = array("repartition" => false);
|
||||||
|
|
||||||
|
/************************************
|
||||||
|
* Balise récupérant les évènements répartis par région
|
||||||
|
*************************************/
|
||||||
|
function balise_MES_REPARTITION($p) {
|
||||||
|
$tag = "";
|
||||||
|
if (($v = interprete_argument_balise(1,$p))!==NULL){
|
||||||
|
$tag = $v;
|
||||||
|
}
|
||||||
|
$p->code = "mes_balise_Repartition($tag)";
|
||||||
|
return $p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/************************************
|
||||||
|
* Récupération du JSON et traitement pour regrouper par région
|
||||||
|
* Renvoie le tableau associatif repartition avec deux clés :
|
||||||
|
* - total : le nombre total d'évènements
|
||||||
|
* - regions : tableau associatif avec comme clé le nom de la région et comme valeur
|
||||||
|
* le tableau des évènements
|
||||||
|
*************************************/
|
||||||
|
function mes_balise_Repartition($tag) {
|
||||||
|
if ($GLOBALS[MES]["repartition"] != false) {
|
||||||
|
return $GLOBALS[MES]["repartition"];
|
||||||
|
}
|
||||||
|
$url = 'http://www.agendadulibre.org/maps.json?future=false&tag='.$tag;
|
||||||
|
$json = json_decode(file_get_contents($url), true);
|
||||||
|
$evenementCount = count($json);
|
||||||
|
$regionMap = array();
|
||||||
|
for($i = 0; $i < $evenementCount; $i++) {
|
||||||
|
$evenement = $json[$i];
|
||||||
|
$region = "Autre";
|
||||||
|
if (array_key_exists("region", $evenement["properties"])) {
|
||||||
|
$region = $evenement["properties"]["region"];
|
||||||
|
}
|
||||||
|
if (array_key_exists($region, $regionMap)) {
|
||||||
|
$regionMap[$region][] = $evenement;
|
||||||
|
} else {
|
||||||
|
$regionMap[$region] = array($evenement);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
uksort($regionMap, "mes_compare");
|
||||||
|
$repartition = array(
|
||||||
|
"total" => $evenementCount,
|
||||||
|
"regions" => $regionMap
|
||||||
|
);
|
||||||
|
$GLOBALS[MES]["repartition"] = $repartition;
|
||||||
|
return $repartition;
|
||||||
|
}
|
||||||
|
|
||||||
|
/************************************
|
||||||
|
* Fonction de comparaison tenant compte des accents
|
||||||
|
*************************************/
|
||||||
|
function mes_compare($a, $b) {
|
||||||
|
$coll = collator_create( 'fr_FR' );
|
||||||
|
return collator_compare($coll, $a, $b);
|
||||||
}
|
}
|
@ -1,16 +1,13 @@
|
|||||||
<BOUCLE_region(DATA){source tableau,#LISTE_REGIONS}>
|
#SET{repartition, #MES_REPARTITION{#ENV{tag}}}
|
||||||
|
<BOUCLE_repartition(DATA){source tableau, #GET{repartition/regions}}>
|
||||||
[(#SET{url,#VAL{'http://www.agendadulibre.org/maps.json?tag='}|concat{#ENV{tag}}|concat{'&future=false®ion='}|concat{#CLE}})]
|
<h4 class="spip">#CLE</h4>
|
||||||
<B_agenda>
|
<ul>
|
||||||
<h4 class="spip">#VALEUR </h4>
|
<BOUCLE_evenements(DATA) {source tableau, #VALEUR}{par properties/start_time}>
|
||||||
<ul>
|
[(#SET{evt,#VALEUR|table_valeur{properties}})]
|
||||||
<BOUCLE_agenda(DATA) {source json, #GET{url} }{par properties/start_time}>
|
<li>[[(#GET{evt/start_time}|nom_jour)] (#GET{evt/start_time}|affdate_jourcourt)[ à (#GET{evt/start_time}|heures)][:(#GET{evt/start_time}|minutes)]]
|
||||||
[(#SET{evt,#VALEUR|table_valeur{properties}})]
|
<a href="http://www.agendadulibre.org/events/[(#GET{evt/id})]">[(#GET{evt/name})]</a>
|
||||||
<li>[[(#GET{evt/start_time}|nom_jour)] (#GET{evt/start_time}|affdate)[ à (#GET{evt/start_time}|heures)][:(#GET{evt/start_time}|minutes)]]
|
à [(#GET{evt/city})]
|
||||||
<a href="http://www.agendadulibre.org/events/[(#GET{evt/id})]">[(#GET{evt/name})]</a>
|
</li>
|
||||||
à [(#GET{evt/city})]
|
</BOUCLE_evenements>
|
||||||
</li>
|
</ul>
|
||||||
</BOUCLE_agenda>
|
</BOUCLE_repartition>
|
||||||
</ul>
|
|
||||||
</B_agenda>
|
|
||||||
</BOUCLE_region>
|
|
||||||
|
@ -1,7 +1,2 @@
|
|||||||
[(#SET{url,#VAL{'http://www.agendadulibre.org/maps.json?tag='}|concat{#ENV{tag}}|concat{'&future=false'}})]
|
#SET{repartition, #MES_REPARTITION{#ENV{tag}}}
|
||||||
|
#GET{repartition/total}
|
||||||
<BOUCLE_agenda(DATA) {source json, #GET{url} }>
|
|
||||||
|
|
||||||
</BOUCLE_agenda>
|
|
||||||
#TOTAL_BOUCLE
|
|
||||||
</B_agenda>
|
|
Loading…
Reference in New Issue
Block a user