2017-01-09 10:47:45 +01:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Created by PhpStorm.
|
|
|
|
* User: declic3000
|
|
|
|
* Date: 26/11/16
|
|
|
|
* Time: 11:36
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function balise_LISTE_REGIONS ($p) {
|
|
|
|
$p->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;
|
2018-02-01 22:47:46 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**********************************
|
|
|
|
* Le préfixe MES identifie les éléments
|
|
|
|
* défini dans ce fichier mes_fonctions.php
|
|
|
|
***********************************/
|
|
|
|
define("MES", "MES");
|
2018-03-18 18:15:39 +01:00
|
|
|
$GLOBALS[MES] = array("repartition" => false, "repartition2" => false);
|
2018-02-01 22:47:46 +01:00
|
|
|
|
|
|
|
/************************************
|
|
|
|
* 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;
|
|
|
|
}
|
|
|
|
|
2018-03-18 18:15:39 +01:00
|
|
|
/************************************
|
|
|
|
* Balise récupérant les évènements répartis par pays et par région
|
|
|
|
*************************************/
|
|
|
|
function balise_MES_REPARTITION2($p) {
|
|
|
|
$tag = "";
|
|
|
|
if (($v = interprete_argument_balise(1,$p))!==NULL){
|
|
|
|
$tag = $v;
|
|
|
|
}
|
|
|
|
$p->code = "mes_balise_Repartition2($tag)";
|
|
|
|
return $p;
|
|
|
|
}
|
|
|
|
|
2018-02-01 22:47:46 +01:00
|
|
|
/************************************
|
|
|
|
* 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;
|
|
|
|
}
|
|
|
|
|
2018-03-18 18:15:39 +01:00
|
|
|
/************************************
|
|
|
|
* Travaille en deux étapes :
|
2019-03-08 17:19:26 +01:00
|
|
|
* - 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 :
|
2018-03-18 18:15:39 +01:00
|
|
|
* - total : le nombre total d'évènements
|
2019-03-08 17:19:26 +01:00
|
|
|
* - 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
|
2018-03-18 18:15:39 +01:00
|
|
|
*************************************/
|
|
|
|
function mes_balise_Repartition2($tag) {
|
|
|
|
if ($GLOBALS[MES]["repartition2"] != false) {
|
|
|
|
return $GLOBALS[MES]["repartition2"];
|
|
|
|
}
|
2019-03-06 01:26:18 +01:00
|
|
|
$url_evenements = 'http://www.agendadulibre.org/events.json?future=false&tag='.$tag;
|
2018-03-18 18:51:53 +01:00
|
|
|
$evenementArray = json_decode(file_get_contents($url_evenements), true);
|
|
|
|
$evenementCount = count($evenementArray);
|
|
|
|
$evenementParRegionMap = array();
|
|
|
|
for($i = 0; $i < $evenementCount; $i++) {
|
|
|
|
$evenement = $evenementArray[$i];
|
|
|
|
$region_id = 0;
|
2019-03-06 01:26:18 +01:00
|
|
|
if (array_key_exists("region_id", $evenement)) {
|
|
|
|
$region_id = $evenement["region_id"];
|
2019-03-08 17:19:26 +01:00
|
|
|
}
|
2018-03-18 18:51:53 +01:00
|
|
|
if (array_key_exists("id_".$region_id, $evenementParRegionMap)) {
|
|
|
|
$evenementParRegionMap["id_".$region_id][] = $evenement;
|
|
|
|
} else {
|
2019-03-08 17:19:26 +01:00
|
|
|
$evenementParRegionMap["id_".$region_id] = array($evenement);
|
2018-03-18 18:51:53 +01:00
|
|
|
}
|
|
|
|
}
|
2018-03-18 18:15:39 +01:00
|
|
|
$url_regions = "http://www.agendadulibre.org/regions.json";
|
|
|
|
$total = 0;
|
|
|
|
$json_regions = json_decode(file_get_contents($url_regions), true);
|
|
|
|
$regionCount = count($json_regions);
|
|
|
|
$paysArray = array();
|
2019-03-08 17:19:26 +01:00
|
|
|
$regionTraiteeMap = array();
|
2018-03-18 18:15:39 +01:00
|
|
|
for($i = 0; $i < $regionCount; $i++) {
|
|
|
|
$region = $json_regions[$i];
|
|
|
|
if (strlen($region['code']) > 0) {
|
|
|
|
$pays_id = $region['id'];
|
|
|
|
$pays = array("name" => $region['name'], "code" => $region['code'], "sousregions" => array());
|
|
|
|
$total_pays = 0;
|
|
|
|
for($j = 0; $j < $regionCount; $j++) {
|
|
|
|
$sousregion = $json_regions[$j];
|
2018-03-18 18:51:53 +01:00
|
|
|
if ($sousregion["region_id"] == $pays_id) {
|
|
|
|
$region_id = $sousregion["id"];
|
|
|
|
if (array_key_exists("id_".$region_id, $evenementParRegionMap)) {
|
|
|
|
$evenementParRegionArray = $evenementParRegionMap["id_".$region_id];
|
|
|
|
$total_region = count($evenementParRegionArray);
|
|
|
|
$sousregion["evenements"] = $evenementParRegionArray;
|
2018-03-18 18:15:39 +01:00
|
|
|
$total_pays += $total_region;
|
2018-03-18 18:51:53 +01:00
|
|
|
$total += $total_region;
|
2019-03-08 17:19:26 +01:00
|
|
|
$pays["sousregions"][] = $sousregion;
|
|
|
|
$regionTraiteeMap["id_".$region_id] = 1;
|
2018-03-18 18:15:39 +01:00
|
|
|
}
|
|
|
|
}
|
2019-03-08 17:19:26 +01:00
|
|
|
}
|
|
|
|
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;
|
2018-03-18 18:15:39 +01:00
|
|
|
}
|
|
|
|
if ($total_pays > 0) {
|
|
|
|
$paysArray[] = $pays;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-03-08 17:19:26 +01:00
|
|
|
// 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
|
2018-03-18 18:15:39 +01:00
|
|
|
$repartition = array(
|
|
|
|
"total" => $total,
|
2019-03-08 17:19:26 +01:00
|
|
|
"pays" => $paysArray,
|
|
|
|
"ailleurs" => $ailleursArray
|
2018-03-18 18:15:39 +01:00
|
|
|
);
|
|
|
|
$GLOBALS[MES]["repartition2"] = $repartition;
|
|
|
|
return $repartition;
|
|
|
|
}
|
|
|
|
|
2018-02-01 22:47:46 +01:00
|
|
|
/************************************
|
|
|
|
* Fonction de comparaison tenant compte des accents
|
|
|
|
*************************************/
|
|
|
|
function mes_compare($a, $b) {
|
|
|
|
$coll = collator_create( 'fr_FR' );
|
|
|
|
return collator_compare($coll, $a, $b);
|
2019-03-06 01:26:18 +01:00
|
|
|
}
|