From b82f6ebba2424a6b85a0d9389d3604ae0fca61fd Mon Sep 17 00:00:00 2001 From: isUnknown Date: Fri, 13 Sep 2024 16:36:32 +0200 Subject: [PATCH] home - show only ordered future events --- site/collections/ordered-season.php | 29 +++++++++++++++++++++++++++++ site/plugins/helpers/index.php | 22 ++++++++++++++++++++++ site/templates/home.php | 18 ++++++------------ 3 files changed, 57 insertions(+), 12 deletions(-) create mode 100644 site/collections/ordered-season.php diff --git a/site/collections/ordered-season.php b/site/collections/ordered-season.php new file mode 100644 index 0000000..6b77b92 --- /dev/null +++ b/site/collections/ordered-season.php @@ -0,0 +1,29 @@ +collection('current-season')->children() as $event) { + $sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure(); + + $sessionDates = $sessions->map(function($session) { + return $session->date()->value(); + })->data; + + if (!empty($sessionDates)) { + $orderedSeason->add($event); + } + } + + // Trier les événements en fonction de la date la plus proche + $orderedSeason = $orderedSeason->sortBy(function ($event) { + $sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure(); + + $sessionDates = $sessions->map(function($session) { + return $session->date()->value(); + })->data; + + return min($sessionDates); + }); + + return $orderedSeason; +}; diff --git a/site/plugins/helpers/index.php b/site/plugins/helpers/index.php index a508c39..c18756c 100644 --- a/site/plugins/helpers/index.php +++ b/site/plugins/helpers/index.php @@ -1,5 +1,27 @@ isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure(); + + $sessionDates = $sessions->map(function($session) { + return $session->date()->value(); + })->data; + + $futureDates = array_filter($sessionDates, function ($date) { + return strtotime($date) > time(); + }); + + if (!empty($futureDates)) { + $futureEvents->add($event); + } + } + + return $futureEvents; +} + function buildFieldsString($requestFields) { $fields = []; foreach ($requestFields as $field) { diff --git a/site/templates/home.php b/site/templates/home.php index 08fc602..8984ffd 100644 --- a/site/templates/home.php +++ b/site/templates/home.php @@ -20,23 +20,17 @@ children()->first()->children(); - $orderedEvents = $currentSeason->sortBy(function ($event) { - if ($event->isMapadoEvent() == 'true') { - return $event->remoteSessions()->toStructure()->toArray()[0]['date']; - } else { - return $event->sessions()->toStructure()->toArray()[0]['date']; - } - }, - 'asc' - ); + $orderedSeason = $kirby->collection('ordered-season'); + $comingEvents = filterFutureEvents($orderedSeason); +?> - snippet('events-grid', ['title' => 'Prochainement', 'events' => $orderedEvents->slice(0, 2), 'columns' => 2]) + 'Prochainement', 'events' => $comingEvents->slice(0, 2), 'columns' => 2]) ?> - $orderedEvents->slice(2, 3)]) ?> + $comingEvents->slice(2, 3)]) ?>