From 881f384e222a2f96ec89a92ae0a7de05ddc9d2ab Mon Sep 17 00:00:00 2001 From: isUnknown Date: Fri, 8 Nov 2024 16:32:47 +0100 Subject: [PATCH] program - show events without sessions at the end of next events #18 --- site/collections/ordered-season.php | 21 +++++++++++---------- site/plugins/helpers/index.php | 17 ++++++++++------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/site/collections/ordered-season.php b/site/collections/ordered-season.php index 8a83b29..c670b6d 100644 --- a/site/collections/ordered-season.php +++ b/site/collections/ordered-season.php @@ -1,36 +1,37 @@ 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); - } + $orderedSeason->add($event); } + $endOfProgramEvents = $orderedSeason->filter(function ($event) { + $sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure(); + $sessionDates = $sessions->map(function($session) { + return $session->date()->value(); + })->data; - $normalEvents = $orderedSeason->filter(function ($event) { - return $event->status() === 'listed'; + return empty($sessionDates) || $event->status() === 'unlisted'; }); - $endOfProgramEvents = $orderedSeason->filter(function ($event) { - return $event->status() === 'unlisted'; + $normalEvents = $orderedSeason->filter(function ($event) use ($endOfProgramEvents) { + return $event->status() === 'listed' && !$endOfProgramEvents->has($event); }); $normalEvents = $normalEvents->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 !empty($sessionDates) ? min($sessionDates) : PHP_INT_MAX; }); $orderedSeason = $normalEvents->merge($endOfProgramEvents); diff --git a/site/plugins/helpers/index.php b/site/plugins/helpers/index.php index b10ad79..cc4bf2e 100644 --- a/site/plugins/helpers/index.php +++ b/site/plugins/helpers/index.php @@ -22,24 +22,24 @@ function getMonthNumber($month) { function splitNextAndPreviousEvents($events) { $next = new Pages(); $previous = new Pages(); + $noDateEvents = 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; + if (empty($sessionDates)) { + $noDateEvents->add($event); + continue; + } + $futureDates = array_filter($sessionDates, function ($date) { - // strtotime() gives the timestamp for midnight - // time() gives the current timestamp so if the event occurs today it will be considered as past after midnight - // so we need to add a day, in seconds - $oneDayInSecond = 24*60*60; + $oneDayInSecond = 24 * 60 * 60; $dateTimeStamp = strtotime($date) + $oneDayInSecond; - return $dateTimeStamp >= time(); }); - if (!empty($futureDates)) { $next->add($event); @@ -48,12 +48,15 @@ function splitNextAndPreviousEvents($events) { } } + $next = $next->merge($noDateEvents); + return [ 'next' => $next, 'previous' => $previous, ]; } + function buildFieldsString($requestFields) { $fields = []; foreach ($requestFields as $field) {