app/models/calendar_monthly.php (36 lines of code) (raw):
<?php
declare(strict_types=1);
use benhall14\phpCalendar\Calendar;
use ReleaseInsights\{Data, Release, Version};
$releases = new Data();
$calendar = new Calendar();
$events = [];
// Check if we have a planned dot release coming for the current cycle
$current_release = key($releases->getLatestMajorRelease());
$current_release_schedule = new Release($current_release)->getSchedule();
if (isset($current_release_schedule['planned_dot_release'])) {
$date = new DateTime($current_release_schedule['planned_dot_release'])->format('Y-m-d');
$events[] = [
'start' => $date,
'end' => $date,
'summary' => Release::getNiceLabel(new Version($current_release)->normalized, 'planned_dot_release') . "<br>\n",
'mask' => true,
];
}
// loop through future releases
foreach (array_keys($releases->getFutureReleases()) as $version) {
if ((int) $version < RELEASE) {
continue;
}
foreach (new Release($version)->getSchedule() as $event => $date) {
if ($event === 'version') {
continue;
}
$date = new DateTime($date)->format('Y-m-d');
$events[] = [
'start' => $date,
'end' => $date,
'summary' => Release::getNiceLabel($version, $event) . "<br>\n",
'mask' => true,
];
}
}
return $calendar->addEvents($events);