code = "liste_regions()"; return $p; } function liste_regions(){ $tab_regions=array( '3'=>"Auvergne-Rhône-Alpes", '5'=>"Bourgogne-Franche-Comté", '6'=>"Bretagne", '7'=>"Centre-Val de Loire", '9'=>"Corse", '1'=>"Grand Est", '23'=>"Guadeloupe", '24'=>"Guyane", '17'=>"Hauts-de-France", '12'=>"Île-de-France", '26'=>"La Réunion", '25'=>"Martinique", '28'=>"Mayotte", '4'=>"Normandie", '2'=>"Nouvelle-Aquitaine", '13'=>"Occitanie", '18'=>"Pays de la Loire", '21'=>"Provence-Alpes-Côte d'Azur", '27'=>"Autre pays" ); 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); }