init(); $db = $this->db; if (!$this->isHttps() && $db->getValue('SELECT https FROM config') && !_DEV_MODE) { header("Location: https://{$this->getUri()}"); exit(0); } $this->startSession(); // Getting the requested page if (!empty($_REQUEST['method']) && isHyphen($_REQUEST['method'])) $page = $_REQUEST['method']; else $page = 'main'; // Checking the browser version if (!isset($_SESSION['skipBrowser']) && $page != 'update-browser') { $updateBrowser = FALSE; if (!isset($_GET['skipBrowser']) && isset($_SERVER['HTTP_USER_AGENT']) &&($browser = get_browser($_SERVER['HTTP_USER_AGENT']))) { $browserVersion =(double) $browser->version; $minVersion = $db->getValue( 'SELECT version FROM browser WHERE name = #', [$browser->browser]); $updateBrowser = $browserVersion > 0 && isset($minVersion) && $browserVersion < $minVersion; } if ($updateBrowser) { header('Location: ?method=update-browser'); exit(0); } else $_SESSION['skipBrowser'] = TRUE; } // If enabled, requests the user to choose between two web versions if (!isset($_SESSION['skipVersionMenu']) && $db->getValue('SELECT testDomain FROM config')) { $_SESSION['skipVersionMenu'] = TRUE; header('Location: ?method=version-menu'); } // Setting the version setcookie('vnVersion', $this->getVersion()); // Loading the requested page $basePath = "pages/$page"; if (file_exists($basePath)) { Locale::addPath($basePath); $phpFile = "./$basePath/$page.php"; if (file_exists($phpFile)) require($phpFile); $this->printHeader(); $dir = $basePath; include_once __DIR__.'/html.php'; include("./$basePath/ui.php"); } else header('Location: ./'); } function printHeader() { header('Content-Type: text/html; charset=UTF-8'); //header("Content-Security-Policy: default-src *; img-src *;"); } function errorHandler($err) { error_log("{$err->getMessage()} {$err->getTraceAsString()}"); $this->printHeader(); include(__DIR__.'/unavailable.html'); exit(0); return FALSE; } function isMobile() { $re = '/(Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone)/i'; return preg_match($re, $_SERVER['HTTP_USER_AGENT']); } }