app/models/home.php (51 lines of code) (raw):

<?php declare(strict_types=1); use ReleaseInsights\{Bugzilla, Data, ESR, Json, Nightly, URL, Utils, Version}; // Get the schedule for the current nightly $requested_version = Version::get(FIREFOX_NIGHTLY); $nightly_cycle_dates = include MODELS . 'api/release_schedule.php'; // Get the schedule for the current beta $requested_version = Version::get(FIREFOX_BETA); $beta_cycle_dates = include MODELS . 'api/release_schedule.php'; $today_is_release_day = new Data()->isTodayReleaseDay(); if ($today_is_release_day) { $firefox_version_on_release_day = array_search(date('Y-m-d'), new Data()->getMajorReleases()); } else { $firefox_version_on_release_day = FIREFOX_BETA; } // Calculation of rc_week interval $is_rc_week = false; $today = new DateTime(); $rc_week_start = new DateTime($beta_cycle_dates['rc_gtb']); $rc_week_end = new DateTime($nightly_cycle_dates['merge_day']); $rc_build = FIREFOX_BETA; if ((int) FIREFOX_BETA !== (int) FIREFOX_RELEASE) { if (Utils::isDateBetweenDates($today, $rc_week_start, $rc_week_end)) { $is_rc_week = true; // Check if we have already shipped a Release Candidate build to the beta channel // Remote balrog API can give a 404, we have a fallback to N/A $rc_build = Json::load(URL::Balrog->value . 'rules/firefox-beta', 900)['mapping'] ?? 'N/A'; if ($rc_build !== 'N/A') { $rc_build = explode('-', (string) $rc_build)[1]; $rc_build = str_contains($rc_build, 'b') ? FIREFOX_BETA : BETA . ' RC'; } } if ($today_is_release_day) { $is_rc_week = false; } } // Get the latest nightly build ID, used as a tooltip on the nightly version number $latest_nightly = Json::load( URL::Balrog->value . 'releases/Firefox-mozilla-central-nightly-latest', 900 ); $beta_version = new Version(FIREFOX_BETA)->int; $beta_is_the_next_ESR = $beta_version == (int) ESR::getVersion($beta_version); /* Only for the current Nightly view, this makes an HTTP request */ $nightly_state = new Nightly(); $nightly_emergency_message = Bugzilla::linkify($nightly_state->emergency_message); return [ $beta_cycle_dates, $nightly_cycle_dates, $today_is_release_day, $is_rc_week, $rc_build, $nightly_state->getLatestBuildID(), $firefox_version_on_release_day, $beta_is_the_next_ESR, $nightly_state->auto_updates, $nightly_emergency_message, ];