app/inc/config.php (55 lines of code) (raw):
<?php
declare(strict_types=1);
use ReleaseInsights\Data;
use function Sentry\init;
// We always work with UTF8 encoding
mb_internal_encoding('UTF-8');
// Make sure we have a timezone set
date_default_timezone_set('UTC');
// Set locale to en-US, avoids setting it in every twig template
locale_set_default('en-US');
// Application globals paths
define('INSTALL_ROOT', dirname(__DIR__, 2) . '/');
const CONTROLLERS = INSTALL_ROOT . 'app/controllers/';
const DATA = INSTALL_ROOT . 'app/data/';
const MODELS = INSTALL_ROOT . 'app/models/';
const VIEWS = INSTALL_ROOT . 'app/views/';
const TEST_FILES = INSTALL_ROOT . 'tests/Files/';
const CACHE_PATH = INSTALL_ROOT . 'cache/';
// Prepare caching
define('CACHE_ENABLED', ! isset($_GET['nocache']));
define('CACHE_TIME', 900); // 15 minutes
// Autoloading of classes (both /vendor/ and /app/classes)
require_once INSTALL_ROOT . 'vendor/autoload.php';
// Get Firefox Versions from Product Details library, default cache duration
$firefox_versions = new Data()->getFirefoxVersions();
// Exact version numbers (strings) from product-details
define('ESR', $firefox_versions['FIREFOX_ESR']);
define('ESR_NEXT', $firefox_versions['FIREFOX_ESR_NEXT']);
define('ESR115', $firefox_versions['FIREFOX_ESR115']);
define('FIREFOX_NIGHTLY', $firefox_versions['FIREFOX_NIGHTLY']);
define('DEV_EDITION', $firefox_versions['FIREFOX_DEVEDITION']);
define('FIREFOX_BETA', $firefox_versions['LATEST_FIREFOX_RELEASED_DEVEL_VERSION']);
define('FIREFOX_RELEASE', $firefox_versions['LATEST_FIREFOX_VERSION']);
// Major version numbers (integers), used across the app
define('NIGHTLY', (int) FIREFOX_NIGHTLY);
define('BETA', (int) FIREFOX_BETA);
define('RELEASE', (int) FIREFOX_RELEASE);
define('MAIN_ESR', (int) (ESR_NEXT != '' ? ESR_NEXT : ESR));
define('OLD_ESR', (int) (ESR115 != '' ? ESR115 : (ESR_NEXT != '' ? ESR : ESR_NEXT)));
// Are we on one of our staging sites
$http_host = isset($_SERVER['HTTP_HOST']) ? (string) $_SERVER['HTTP_HOST'] : null;
define('LOCALHOST',
! is_null($http_host)
&& (
str_starts_with($http_host, 'localhost')
|| str_starts_with($http_host, '127.0.0.1')
)
);
define('STAGING',
! is_null($http_host)
&& $http_host !== 'whattrainisitnow.com'
&& ! LOCALHOST
);
define('PRODUCTION',
! is_null($http_host)
&& $http_host === 'whattrainisitnow.com'
);
// Define a Nonce for inline scripts
define('NONCE', bin2hex(random_bytes(20)));
// Set up Sentry endpoint, don't send errors while in dev mode
if (STAGING) {
init(['dsn' => 'https://e17dcdc892db4ee08a6937603e407f76@o1069899.ingest.sentry.io/4505243444772864']);
}
if (PRODUCTION) {
init(['dsn' => 'https://20bef71984594e16add1d2c69146ad88@o1069899.ingest.sentry.io/4505243430092800']);
}
// Clean up temp variables from global space
unset($firefox_versions, $http_host);