app/models/calendar.php (50 lines of code) (raw):
<?php
declare(strict_types=1);
use ReleaseInsights\{Data, ESR, Release, Version};
$past = [];
$obj = new Data();
foreach ($obj->getDesktopPastReleases(dot_releases: false) as $version => $date) {
$esr = ESR::getOlderSupportedVersion((int) $version) == null
? ESR::getMainDotVersion(ESR::getVersion((int) $version))
: ESR::getMainDotVersion(ESR::getOlderSupportedVersion((int) $version))
. ' + '
. ESR::getMainDotVersion(ESR::getVersion((int) $version));
$betas = $obj->getPastBetas();
if ($version == '17.0') {
$nightly_start = $obj->getDesktopPastReleases()['14.0.1'];
} elseif ($version == '8.0') {
$nightly_start = '2011-07-05';
} elseif ($version == '7.0') {
$nightly_start = '2011-05-24';
} elseif ($version == '6.0') {
$nightly_start = '2011-04-12';
} elseif ((int) $version < 55 && (int) $version > 8) {
$nightly_start = $obj->getDesktopPastReleases()[Version::decrement($version, 3)];
} elseif ($version =='127.0') {
$nightly_start = $obj->getDesktopPastReleases()['125.0.1']; // 125.0 replaced by 125.0.1
} else {
$nightly_start = $obj->getDesktopPastReleases()[Version::decrement($version, 2)];
}
// We never shipped 14.0
$version = $version == '14.0.1' ? '14.0' : $version;
// We never shipped 125.0
$version = $version == '125.0.1' ? '125.0' : $version;
// We never shipped 33.0 and we used a weird 33.1 dot release sheme instead of 33.0.1
$version = $version == '33.1' ? '33.0' : $version;
// We didn't always have a regular beta schedule
$beta_date = $betas[$version . 'b1']
?? $betas[$version . 'b3'] // We used to start betas with b3 when we had aurora
?? $betas[$version . 'b4'] // We never shipped 58.0b3
?? $betas[$version . 'b6'] // We never shipped previous 14.0bx
?? $betas[$version . 'rc1'] // We had no public betas for 1.0 & 1.5 but had RCs
?? '9999-12-12'; // Fake date in the future as a fallback to avoid a plausible date.
$past += [
$version => [
'version' => $version,
'release_date' => $date,
'nightly_start' => $nightly_start,
'beta_start' => $beta_date,
'esr' => $esr,
'owner' => new Data()->release_owners[$version] ?? 'TBD',
],
];
}
arsort($past);
// Get our upcoing calendar and major milestones
$future = include MODELS . 'api/future_calendar.php';
return ['future' => $future, 'past' => $past];