From 9723834532953dd067764e0046358dc7ef7f08be Mon Sep 17 00:00:00 2001 From: Vincent Calame Date: Fri, 8 Mar 2019 17:19:26 +0100 Subject: [PATCH] Traitement des evenements hors region --- mes_fonctions.php | 49 +++++++++++++++++++++++++++++++++------------ modeles/agenda.html | 32 +++++++++++++++++++++++++---- 2 files changed, 64 insertions(+), 17 deletions(-) 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}))] +
  • + +
+