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,
];