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)]) ?>