public function getPastSchedule()

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;
    }