diff --git a/evenements-liste-motcle.html b/evenements-liste-motcle.html new file mode 100644 index 0000000..3494565 --- /dev/null +++ b/evenements-liste-motcle.html @@ -0,0 +1,34 @@ +#CACHE{0}#SET{motcle, #ENV{motcle}|lef_test_tag} + + + +Liste des évènements #GET{motcle} + + + + +[

Flux RSS pour #GET{motcle}

] + +[(#ENV{motcle}|lef_liste_evenements_tag)] +
+ + diff --git a/evenements-rss-motcle.html b/evenements-rss-motcle.html new file mode 100644 index 0000000..02e4b2d --- /dev/null +++ b/evenements-rss-motcle.html @@ -0,0 +1,31 @@ +#CACHE{0}[(#HTTP_HEADER{Content-type: text/xml[; charset=(#CHARSET)]})] +#SET{motcle, #ENV{motcle}|lef_test_tag} + + + Évènements #GET{motcle} + https://www.libre-en-fete.net/spip.php?page=evenements-rss-motcle&motcle=#GET{motcle} + Liste des évènements du mot-clé #GET{motcle} + fr + Libre en fête / Agenda du Libre + +#SET{evenement_array, #GET{motcle}|lef_evenement_array_tag} + + +[(#VALEUR{start_time}|lef_date) ][(#VALEUR{city}) : ][(#VALEUR{title}|texte_backend) ] +https://www.agendadulibre.org/events/#VALEUR{id} +https://www.agendadulibre.org/events/#VALEUR{id} +#VALEUR{time} +text/html +fr + +<p><strong>Contact :</strong> [(#VALEUR{contact}|texte_backend)]</p> +[(#VALEUR{description}|texte_backend)] + + + + + + diff --git a/mes_fonctions.php b/mes_fonctions.php index 1116e39..47ea012 100644 --- a/mes_fonctions.php +++ b/mes_fonctions.php @@ -240,42 +240,55 @@ function filtre_lef_test_num($annee) { } } +/************************************ +* Vérifie que le paramètre est un mot-clé correct +*************************************/ + +function filtre_lef_test_tag($tag) { + if (preg_match('/^[-a-z0-9]+$/', $tag)) { + return $tag; + } else { + return ""; + } +} + /************************************ * Spécial filtre liste des évènements *************************************/ function filtre_lef_liste_evenements($annee) { + if (strlen($annee) == 0) { + return ""; + } if (!is_numeric($annee)) { return "Paramètre année incorrect"; } - $evenementArray = lef_getEvenementArray($annee); - $evenementCount = count( $evenementArray); - if ($evenementCount == 0) { - return "Aucun évènement"; - } - $result = ""; - for($i = 0; $i < $evenementCount; $i++) { - $evenement = $evenementArray[$i]; - $increment = ($evenementCount - $i); - $date = date_create($evenement["start_time"]); - $result .= ""; - $result .= "".$increment.""; - $result .= ''.$evenement["id"].""; - $result .= "".date_format($date, 'd/m').""; - $result .= "".$evenement["title"].""; - $result .= "".$evenement["city"].""; - $result .= "".$evenement["time"].""; - $result .= "".$evenement["contact"].""; - $result .= ""; - } - return $result; + $evenementArray = lef_getEvenementArrayParAnnee($annee); + return lef_getEvenementRows($evenementArray); } +function filtre_lef_liste_evenements_tag($tag) { + if (strlen($tag) == 0) { + return ""; + } + if (!preg_match('/^[-a-z0-9]+$/', $tag)) { + return "Paramètre tag incorrect"; + } else { + $evenementArray = lef_getEvenementArrayParTag($tag); + return lef_getEvenementRows($evenementArray); + } +} + + function filtre_lef_evenement_array($annee) { if (!is_numeric($annee)) { return array(); } - return lef_getEvenementArray($annee); + return lef_getEvenementArrayParAnnee($annee); +} + +function filtre_lef_evenement_array_tag($tag) { + return lef_getEvenementArrayParTag($tag); } function filtre_lef_date($time) { @@ -288,15 +301,22 @@ function filtre_lef_date($time) { * Le chemin du répertoire IMG est codé en dur ! *************************************/ -function lef_getEvenementArray($annee) { +function lef_getEvenementArrayParAnnee($annee) { + return lef_getEvenementArray("libre-en-fete-".$annee, $annee); +} + +function lef_getEvenementArrayParTag($tag) { + return lef_getEvenementArray($tag, "tags/".$tag); +} + +function lef_getEvenementArray($tag, $storeDir) { $IMG_ROOT = "/var/lib/spip/sites/www.libre-en-fete.net/"; - $tag = "libre-en-fete-".$annee; $jsonString = file_get_contents("https://www.agendadulibre.org/events.json?future=false&tag=".$tag); $json = json_decode($jsonString, TRUE); $evenementCount = count($json); $currentTime = date(DATE_ATOM); - $dirPath = $IMG_ROOT."IMG/agendadulibre/".$annee; + $dirPath = $IMG_ROOT."IMG/agendadulibre/".$storeDir; if (!file_exists($dirPath)) { mkdir($dirPath, 0777, TRUE); } @@ -320,6 +340,29 @@ function lef_getEvenementArray($annee) { return $evenementArray; } +function lef_getEvenementRows($evenementArray) { + $evenementCount = count( $evenementArray); + if ($evenementCount == 0) { + return "Aucun évènement"; + } + $result = ""; + for($i = 0; $i < $evenementCount; $i++) { + $evenement = $evenementArray[$i]; + $increment = ($evenementCount - $i); + $date = date_create($evenement["start_time"]); + $result .= ""; + $result .= "".$increment.""; + $result .= ''.$evenement["id"].""; + $result .= "".date_format($date, 'd/m').""; + $result .= "".$evenement["title"].""; + $result .= "".$evenement["city"].""; + $result .= "".$evenement["time"].""; + $result .= "".$evenement["contact"].""; + $result .= ""; + } + return $result; +} + function lef_comparaison($evt1, $evt2) { $time1 = $evt1["time"]; $time2 = $evt2["time"];