program - show events without sessions at the end of next events #18
This commit is contained in:
parent
9c55ee0e5d
commit
881f384e22
2 changed files with 21 additions and 17 deletions
|
|
@ -1,36 +1,37 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
return function($kirby) {
|
return function($kirby) {
|
||||||
$orderedSeason = new Pages();
|
$orderedSeason = new Pages();
|
||||||
|
|
||||||
foreach ($kirby->collection('current-season')->children() as $event) {
|
foreach ($kirby->collection('current-season')->children() as $event) {
|
||||||
$sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure();
|
$sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure();
|
||||||
|
|
||||||
$sessionDates = $sessions->map(function($session) {
|
$sessionDates = $sessions->map(function($session) {
|
||||||
return $session->date()->value();
|
return $session->date()->value();
|
||||||
})->data;
|
})->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 empty($sessionDates) || $event->status() === 'unlisted';
|
||||||
return $event->status() === 'listed';
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$endOfProgramEvents = $orderedSeason->filter(function ($event) {
|
$normalEvents = $orderedSeason->filter(function ($event) use ($endOfProgramEvents) {
|
||||||
return $event->status() === 'unlisted';
|
return $event->status() === 'listed' && !$endOfProgramEvents->has($event);
|
||||||
});
|
});
|
||||||
|
|
||||||
$normalEvents = $normalEvents->sortBy(function ($event) {
|
$normalEvents = $normalEvents->sortBy(function ($event) {
|
||||||
$sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure();
|
$sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure();
|
||||||
|
|
||||||
$sessionDates = $sessions->map(function($session) {
|
$sessionDates = $sessions->map(function($session) {
|
||||||
return $session->date()->value();
|
return $session->date()->value();
|
||||||
})->data;
|
})->data;
|
||||||
|
|
||||||
return min($sessionDates);
|
return !empty($sessionDates) ? min($sessionDates) : PHP_INT_MAX;
|
||||||
});
|
});
|
||||||
|
|
||||||
$orderedSeason = $normalEvents->merge($endOfProgramEvents);
|
$orderedSeason = $normalEvents->merge($endOfProgramEvents);
|
||||||
|
|
|
||||||
|
|
@ -22,24 +22,24 @@ function getMonthNumber($month) {
|
||||||
function splitNextAndPreviousEvents($events) {
|
function splitNextAndPreviousEvents($events) {
|
||||||
$next = new Pages();
|
$next = new Pages();
|
||||||
$previous = new Pages();
|
$previous = new Pages();
|
||||||
|
$noDateEvents = new Pages();
|
||||||
|
|
||||||
foreach ($events as $event) {
|
foreach ($events as $event) {
|
||||||
$sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure();
|
$sessions = $event->isMapadoEvent() == 'true' ? $event->remoteSessions()->toStructure() : $event->sessions()->toStructure();
|
||||||
|
|
||||||
$sessionDates = $sessions->map(function($session) {
|
$sessionDates = $sessions->map(function($session) {
|
||||||
return $session->date()->value();
|
return $session->date()->value();
|
||||||
})->data;
|
})->data;
|
||||||
|
|
||||||
|
if (empty($sessionDates)) {
|
||||||
|
$noDateEvents->add($event);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$futureDates = array_filter($sessionDates, function ($date) {
|
$futureDates = array_filter($sessionDates, function ($date) {
|
||||||
// strtotime() gives the timestamp for midnight
|
$oneDayInSecond = 24 * 60 * 60;
|
||||||
// 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;
|
|
||||||
$dateTimeStamp = strtotime($date) + $oneDayInSecond;
|
$dateTimeStamp = strtotime($date) + $oneDayInSecond;
|
||||||
|
|
||||||
return $dateTimeStamp >= time();
|
return $dateTimeStamp >= time();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
if (!empty($futureDates)) {
|
if (!empty($futureDates)) {
|
||||||
$next->add($event);
|
$next->add($event);
|
||||||
|
|
@ -48,12 +48,15 @@ function splitNextAndPreviousEvents($events) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$next = $next->merge($noDateEvents);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'next' => $next,
|
'next' => $next,
|
||||||
'previous' => $previous,
|
'previous' => $previous,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function buildFieldsString($requestFields) {
|
function buildFieldsString($requestFields) {
|
||||||
$fields = [];
|
$fields = [];
|
||||||
foreach ($requestFields as $field) {
|
foreach ($requestFields as $field) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue