home - show only ordered future events

This commit is contained in:
isUnknown 2024-09-13 16:36:32 +02:00
parent 2cf0f66586
commit b82f6ebba2
3 changed files with 57 additions and 12 deletions

View file

@ -0,0 +1,29 @@
<?php
return function($kirby) {
$orderedSeason = new Pages();
foreach ($kirby->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;
};

View file

@ -1,5 +1,27 @@
<?php
function filterFutureEvents($events) {
$futureEvents = 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;
$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) {

View file

@ -20,23 +20,17 @@
<?php snippet('calendar-strip') ?>
<?php
$currentSeason = page('programme')->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])
<?php
snippet('events-grid', ['title' => 'Prochainement', 'events' => $comingEvents->slice(0, 2), 'columns' => 2])
?>
<?php snippet('newsletter-section') ?>
<?php snippet('events-grid', ['events' => $orderedEvents->slice(2, 3)]) ?>
<?php snippet('events-grid', ['events' => $comingEvents->slice(2, 3)]) ?>
<?php snippet('callout') ?>