app/models/api/future_calendar.php (28 lines of code) (raw):
<?php
declare(strict_types=1);
use ReleaseInsights\{Data, ESR, Release, Version};
$future = [];
foreach (new Data()->getFutureReleases() as $version => $date) {
$version_data = new Release($version)->getSchedule();
$owner = new Data()->release_owners[$version] ?? 'TBD';
// Display the first name only, we don't need family names for active release managers
$owner = explode(' ', $owner)[0];
$ESR = ESR::getOlderSupportedVersion((int) $version) == null
? ESR::getMainDotVersion(ESR::getVersion((int) $version))
: ESR::getMainDotVersion(ESR::getOlderSupportedVersion((int) $version))
. ' + '
. ESR::getMainDotVersion(ESR::getVersion((int) $version));
$future += [
$version => [
'version' => new Version($version)->int,
'nightly_start' => $version_data['nightly_start'],
'soft_freeze' => $version_data['soft_code_freeze'],
'beta_start' => $version_data['merge_day'],
'release_date' => $date,
'dot_release' => $version_data['planned_dot_release'],
'esr' => $ESR,
'quarter' => date('Y', strtotime($date)) . '-Q' . (string) ceil(date('n', strtotime($date)) / 3),
'owner' => $owner,
],
];
}
return $future;