From b33cb5510d79d6182f6144df3e2d7db1e109e5f5 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Fri, 13 Sep 2024 16:44:50 +0200 Subject: [PATCH] program - ordere events --- site/controllers/program.php | 15 +++------------ site/plugins/helpers/index.php | 23 +++++++++++++++++++++++ site/templates/program.php | 4 ++-- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/site/controllers/program.php b/site/controllers/program.php index 2f92339..3a71d10 100644 --- a/site/controllers/program.php +++ b/site/controllers/program.php @@ -45,13 +45,10 @@ function createArraySession($event, $session) { } -return function($page) { +return function($kirby, $page) { $currentSeason = $page->children()->first(); $today = date('Ymd'); - $previousEvents = new Pages(); - $nextEvents = new Pages(); - $currentSeasonSessions = []; foreach ($currentSeason->children() as $event) { @@ -68,17 +65,11 @@ return function($page) { $isStillShowing = true; } } - - if ($isStillShowing) { - $nextEvents->add($event); - } else { - $previousEvents->add($event); - } } return [ - 'previousEvents' => $previousEvents, - 'nextEvents' => $nextEvents, + 'pastEvents' => filterPastEvents($kirby->collection('ordered-season')), + 'futureEvents' => filterFutureEvents($kirby->collection('ordered-season')), 'currentSeasonSessions' => sortByMonth($currentSeasonSessions) ]; }; \ No newline at end of file diff --git a/site/plugins/helpers/index.php b/site/plugins/helpers/index.php index c18756c..6b07bf0 100644 --- a/site/plugins/helpers/index.php +++ b/site/plugins/helpers/index.php @@ -22,6 +22,29 @@ function filterFutureEvents($events) { return $futureEvents; } +function filterPastEvents($events) { + $pastEvents = new Pages(); + + foreach ($events as $event) { + $sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure(); + + $sessionDates = $sessions->map(function($session) { + return $session->date()->value(); + })->data; + + // Filtrer les événements qui ont toutes leurs dates passées + $pastDates = array_filter($sessionDates, function ($date) { + return strtotime($date) <= time(); + }); + + if (count($pastDates) == count($sessionDates)) { + $pastEvents->add($event); + } + } + + return $pastEvents; +} + function buildFieldsString($requestFields) { $fields = []; foreach ($requestFields as $field) { diff --git a/site/templates/program.php b/site/templates/program.php index 3048899..2ec5601 100644 --- a/site/templates/program.php +++ b/site/templates/program.php @@ -70,11 +70,11 @@

Prochainement — children()->first()->title() ?>

- $nextEvents, 'columns' => 3]) ?> + $futureEvents, 'columns' => 3]) ?>

Événements passés

- $previousEvents, 'columns' => 3]) ?> + $pastEvents, 'columns' => 3]) ?>