Traitement particulier pour les évènements Internet
This commit is contained in:
parent
a2af5661d1
commit
7886660d53
|
@ -1,5 +1,30 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
class LefInternet {
|
||||||
|
|
||||||
|
private $internet_id;
|
||||||
|
private $code = "internet";
|
||||||
|
private $evenementArray = array();
|
||||||
|
|
||||||
|
public function __construct($json_region) {
|
||||||
|
$this->pays_id = $json_region["id"];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function populate( $evenementParRegionMap) {
|
||||||
|
$pays_key = "id_".$this->pays_id;
|
||||||
|
if (array_key_exists($pays_key, $evenementParRegionMap)) {
|
||||||
|
$this->evenementArray = $evenementParRegionMap[$pays_key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function toArray() {
|
||||||
|
|
||||||
|
return array("evenements" => $this->evenementArray, "total" => count($this->evenementArray));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
class LefPays {
|
class LefPays {
|
||||||
private $pays_id;
|
private $pays_id;
|
||||||
private $name = "";
|
private $name = "";
|
||||||
|
@ -49,6 +74,10 @@ class LefPays {
|
||||||
return $this->key_array;
|
return $this->key_array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getCode() {
|
||||||
|
return $this->code;
|
||||||
|
}
|
||||||
|
|
||||||
public function toArray() {
|
public function toArray() {
|
||||||
$evenementsnationaux;
|
$evenementsnationaux;
|
||||||
$totalevenementsnationaux = 0;
|
$totalevenementsnationaux = 0;
|
||||||
|
|
|
@ -152,9 +152,11 @@ function mes_balise_Repartition($tag) {
|
||||||
if ($GLOBALS[MES]["repartition"] != false) {
|
if ($GLOBALS[MES]["repartition"] != false) {
|
||||||
return $GLOBALS[MES]["repartition"];
|
return $GLOBALS[MES]["repartition"];
|
||||||
}
|
}
|
||||||
|
//Étape 1 : récupération de la liste des évènements
|
||||||
$url_evenements = 'http://www.agendadulibre.org/events.json?future=false&tag='.$tag;
|
$url_evenements = 'http://www.agendadulibre.org/events.json?future=false&tag='.$tag;
|
||||||
$evenementArray = json_decode(file_get_contents($url_evenements), true);
|
$evenementArray = json_decode(file_get_contents($url_evenements), true);
|
||||||
$evenementCount = count($evenementArray);
|
$evenementCount = count($evenementArray);
|
||||||
|
//Étape 2 : balayage des évènements et ventilation par région (champ « region_id »)
|
||||||
$evenementParRegionMap = array();
|
$evenementParRegionMap = array();
|
||||||
for($i = 0; $i < $evenementCount; $i++) {
|
for($i = 0; $i < $evenementCount; $i++) {
|
||||||
$evenement = $evenementArray[$i];
|
$evenement = $evenementArray[$i];
|
||||||
|
@ -168,13 +170,22 @@ function mes_balise_Repartition($tag) {
|
||||||
$evenementParRegionMap["id_".$region_id] = array($evenement);
|
$evenementParRegionMap["id_".$region_id] = array($evenement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//Étape 3 : récupération de la liste des régions
|
||||||
$url_regions = "http://www.agendadulibre.org/regions.json";
|
$url_regions = "http://www.agendadulibre.org/regions.json";
|
||||||
$total = 0;
|
$total = 0;
|
||||||
$json_regions = json_decode(file_get_contents($url_regions), true);
|
$json_regions = json_decode(file_get_contents($url_regions), true);
|
||||||
$paysArray = array();
|
$paysArray = array();
|
||||||
$regionTraiteeMap = array();
|
$regionTraiteeMap = array();
|
||||||
|
$internet = array("evenements" => array(), "total" => 0);
|
||||||
|
//Étape 4 : création d'une instance LefPays pour chaque région qui correspond à un pays (présence du champ code), création des sous-régions de ce pays et affectation des évènements liés à ce pays
|
||||||
foreach($json_regions as $json_region) {
|
foreach($json_regions as $json_region) {
|
||||||
if (strlen($json_region['code']) > 0) {
|
$pays_code = $json_region['code'];
|
||||||
|
if ($pays_code == "internet") {
|
||||||
|
$pays_internet = new LefInternet($json_region);
|
||||||
|
$pays_internet->populate($evenementParRegionMap);
|
||||||
|
$internet = $pays_internet->toArray();
|
||||||
|
$total += $internet["total"];
|
||||||
|
} else if (strlen($pays_code) > 0) {
|
||||||
$pays = new LefPays($json_region);
|
$pays = new LefPays($json_region);
|
||||||
$pays->populate($json_regions, $evenementParRegionMap);
|
$pays->populate($json_regions, $evenementParRegionMap);
|
||||||
foreach($pays->getKeyArray() as $key) {
|
foreach($pays->getKeyArray() as $key) {
|
||||||
|
@ -182,7 +193,11 @@ function mes_balise_Repartition($tag) {
|
||||||
}
|
}
|
||||||
$total_pays = $pays->getTotal();
|
$total_pays = $pays->getTotal();
|
||||||
if ($total_pays > 0) {
|
if ($total_pays > 0) {
|
||||||
$paysArray[] = $pays->toArray();
|
if ($pays->getCode() == "internet") {
|
||||||
|
$internet = $pays->toArray();
|
||||||
|
} else {
|
||||||
|
$paysArray[] = $pays->toArray();
|
||||||
|
}
|
||||||
$total += $total_pays;
|
$total += $total_pays;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -198,6 +213,7 @@ function mes_balise_Repartition($tag) {
|
||||||
$repartition = array(
|
$repartition = array(
|
||||||
"total" => $total,
|
"total" => $total,
|
||||||
"pays" => $paysArray,
|
"pays" => $paysArray,
|
||||||
|
"internet" => $internet,
|
||||||
"ailleurs" => $ailleursArray
|
"ailleurs" => $ailleursArray
|
||||||
);
|
);
|
||||||
$GLOBALS[MES]["repartition"] = $repartition;
|
$GLOBALS[MES]["repartition"] = $repartition;
|
||||||
|
|
|
@ -18,8 +18,9 @@
|
||||||
</tr>
|
</tr>
|
||||||
</BOUCLE_evenementsnationaux_liste>
|
</BOUCLE_evenementsnationaux_liste>
|
||||||
</table>
|
</table>
|
||||||
</details>
|
|
||||||
</BOUCLE_evenementsnationaux>
|
</BOUCLE_evenementsnationaux>
|
||||||
|
</details>
|
||||||
|
</B_evenementsnationaux>
|
||||||
|
|
||||||
<BOUCLE_sousregions(DATA){source tableau, #VALEUR{sousregions}}>
|
<BOUCLE_sousregions(DATA){source tableau, #VALEUR{sousregions}}>
|
||||||
<h4 class="spip">#VALEUR{name}</h4>
|
<h4 class="spip">#VALEUR{name}</h4>
|
||||||
|
@ -41,6 +42,25 @@
|
||||||
</BOUCLE_evenements>
|
</BOUCLE_evenements>
|
||||||
</BOUCLE_sousregions>
|
</BOUCLE_sousregions>
|
||||||
</BOUCLE_repartition>
|
</BOUCLE_repartition>
|
||||||
|
<B_evenementsinternet>
|
||||||
|
<h3 class="spip">Internet</h3>
|
||||||
|
<details class="evenement-Details"><summary class="evenement-Summary">En ligne <span class="evenement-Total">(#GET{repartition/internet/total})</span></summary>
|
||||||
|
<table class="evenement-Table">
|
||||||
|
<BOUCLE_evenementsinternet(DATA) {source tableau, #GET{repartition/internet/evenements}}{par start_time}>
|
||||||
|
[(#SET{evt,#VALEUR})]
|
||||||
|
<tr>
|
||||||
|
<td class="evenement-Date">[[(#GET{evt/start_time}|nom_jour)] (#GET{evt/start_time}|affdate_jourcourt)]</td>
|
||||||
|
<td class="evenement-Heure">[(#GET{evt/start_time}|heures)][:(#GET{evt/start_time}|minutes)]</td>
|
||||||
|
<td class="evenement-Titre">
|
||||||
|
<a href="https://www.agendadulibre.org/events/[(#GET{evt/id})]">[(#GET{evt/title})]</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</BOUCLE_evenementsinternet>
|
||||||
|
</table>
|
||||||
|
</details>
|
||||||
|
</B_evenementsinternet>
|
||||||
|
|
||||||
|
|
||||||
<B_ailleurs>
|
<B_ailleurs>
|
||||||
<h3 class="spip">Ailleurs</h3>
|
<h3 class="spip">Ailleurs</h3>
|
||||||
#SET{ailleurs, #GET{repartition/ailleurs}}
|
#SET{ailleurs, #GET{repartition/ailleurs}}
|
||||||
|
|
Loading…
Reference in New Issue