in app/classes/ReleaseInsights/Release.php [134:179]
public function getPastSchedule() : array
{
$data = new Data($this->product_details);
$releases = $data->getMajorReleases();
$release = new DateTime($releases[$this->version->normalized] . ' 06:00 PST');
$betas = $data->getPastBetas();
$betas = array_filter(
$betas,
fn($k) => str_starts_with($k, $this->version->normalized),
ARRAY_FILTER_USE_KEY
);
$dot_releases = $data->getDesktopPastReleases();
$dot_releases = array_filter(
$dot_releases,
fn($k) => $k != $this->version->normalized && str_starts_with($k, $this->version->normalized),
ARRAY_FILTER_USE_KEY
);
// Transform all the DateTime objects in the $schedule array into formated date strings
$format_date = fn(string $day): string => new DateTime($day)->format('Y-m-d H:i:sP');
$schedule = [
'nightly_start' => $format_date(Nightly::cycleStart($this->version->int)),
];
$count = 0;
foreach ($betas as $k => $date) {
$count++;
$schedule['beta_' . (string) $count] = $format_date($date);
}
$schedule += [
'release' => $release->setTimezone(new \DateTimeZone('UTC'))->format('Y-m-d H:i:sP'),
];
$count = 0;
foreach ($dot_releases as $date) {
$count++;
$schedule['dot_release_' . (string) $count] = $format_date($date);
}
// The schedule starts with the release version number
return ['version' => $this->version->normalized] + $schedule;
}