diff --git a/mes_fonctions.php b/mes_fonctions.php
index 84aeec1..5b7e8b7 100644
--- a/mes_fonctions.php
+++ b/mes_fonctions.php
@@ -108,15 +108,19 @@ function mes_balise_Repartition($tag) {
/************************************
* Travaille en deux étapes :
-* - récupère la liste des régions pour construire une arborescence pays par pays
-* - un pays
-
-* - récupère les évenements et les classes
-* Récupération du JSON et traitement pour regrouper par région
-* Renvoie le tableau associatif repartition avec deux clés :
+* - 1) Récupère les évènements et les classe par région
+* - 2) Récupère la liste des pays et des régions et les affecte par pays
+*
+* 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
+* - pays : tableau des pays
+* - ailleurs : tableau des évènements qui n'ont pas été classé dans un pays
+*
+* Un pays est un tableau associatif avec comme clés :
+* - name : le nom du pays
+* - code : son code (à noter que dans le JSON envoyé par l'agenda du libre les pays se distinguent des régions par la présence d'un code)
+* - sousregions : le tableau des sous-régions
+* - evenementsnationaux : évènements codés au niveau du pays
*************************************/
function mes_balise_Repartition2($tag) {
if ($GLOBALS[MES]["repartition2"] != false) {
@@ -131,11 +135,11 @@ function mes_balise_Repartition2($tag) {
$region_id = 0;
if (array_key_exists("region_id", $evenement)) {
$region_id = $evenement["region_id"];
- }
+ }
if (array_key_exists("id_".$region_id, $evenementParRegionMap)) {
$evenementParRegionMap["id_".$region_id][] = $evenement;
} else {
- $evenementParRegionMap["id_".$region_id] = array($evenement);
+ $evenementParRegionMap["id_".$region_id] = array($evenement);
}
}
$url_regions = "http://www.agendadulibre.org/regions.json";
@@ -143,6 +147,7 @@ function mes_balise_Repartition2($tag) {
$json_regions = json_decode(file_get_contents($url_regions), true);
$regionCount = count($json_regions);
$paysArray = array();
+ $regionTraiteeMap = array();
for($i = 0; $i < $regionCount; $i++) {
$region = $json_regions[$i];
if (strlen($region['code']) > 0) {
@@ -159,19 +164,37 @@ function mes_balise_Repartition2($tag) {
$sousregion["evenements"] = $evenementParRegionArray;
$total_pays += $total_region;
$total += $total_region;
- $pays["sousregions"][] = $sousregion;
+ $pays["sousregions"][] = $sousregion;
+ $regionTraiteeMap["id_".$region_id] = 1;
}
}
-
+ }
+ if (array_key_exists("id_".$pays_id, $evenementParRegionMap)) {
+ $evenementNationalArray = $evenementParRegionMap["id_".$pays_id];
+ $total_national = count($evenementNationalArray);
+ $total_pays += $total_national;
+ $total += $total_national;
+ $pays["evenementsnationaux"] = $evenementNationalArray;
+ $regionTraiteeMap["id_".$pays_id] = 1;
}
if ($total_pays > 0) {
$paysArray[] = $pays;
}
}
}
+ // Vérification que toutes les régions ont été traitées, les évènements non traités sont placés « ailleurs »
+ $ailleursArray = array();
+ foreach ($evenementParRegionMap as $key => $array) {
+ if (!(array_key_exists($key, $regionTraiteeMap))) {
+ $ailleursArray = array_merge($ailleursArray, $array);
+ }
+ }
+
+ // Objet final
$repartition = array(
"total" => $total,
- "pays" => $paysArray
+ "pays" => $paysArray,
+ "ailleurs" => $ailleursArray
);
$GLOBALS[MES]["repartition2"] = $repartition;
return $repartition;
diff --git a/modeles/agenda.html b/modeles/agenda.html
index 97ff0f7..756994d 100644
--- a/modeles/agenda.html
+++ b/modeles/agenda.html
@@ -1,16 +1,40 @@
#SET{repartition, #MES_REPARTITION2{#ENV{tag}}}
#VALEUR{name}
-
+
#VALEUR{name}
-
+
[(#SET{evt,#VALEUR})]
- [[(#GET{evt/start_time}|nom_jour)] (#GET{evt/start_time}|affdate_jourcourt)[ à (#GET{evt/start_time}|heures)][:(#GET{evt/start_time}|minutes)]]
[(#GET{evt/title})]
à [(#GET{evt/city})]
-
+
-
+
+
+À l'échelle nationale
+
+
+[(#SET{evt,#VALEUR})]
+ - [[(#GET{evt/start_time}|nom_jour)] (#GET{evt/start_time}|affdate_jourcourt)[ à (#GET{evt/start_time}|heures)][:(#GET{evt/start_time}|minutes)]]
+ [(#GET{evt/title})]
+ [((#GET{evt/city}))]
+
+
+
+
+
+Ailleurs
+
+
+[(#SET{evt,#VALEUR})]
+ - [[(#GET{evt/start_time}|nom_jour)] (#GET{evt/start_time}|affdate_jourcourt)[ à (#GET{evt/start_time}|heures)][:(#GET{evt/start_time}|minutes)]]
+ [(#GET{evt/title})]
+ [((#GET{evt/city}))]
+
+
+
+