$errorcode, 'message' => $message ]; require (__DIR__ . '/../pages/errorview.php'); die(); } function destructiveUrlEncode($str) { $str = str_replace(' ', '_', $str); $str = str_replace('+', '_', $str); $str = str_replace('.', '', $str); return urlencode($str); } function formatMilliseconds($millis) { if ($millis < 1000) { return $millis . 'ms'; } else if ($millis < 10 * 1000) { return number_format($millis / (1000), 2) . 's'; } else if ($millis < 60 * 1000) { return floor($millis / (1000)) . 's'; } else if ($millis < 10 * 60 * 1000) { return floor($millis / (60 * 1000)) . 'min ' . floor(($millis % (60 * 1000)) / 1000) . 's'; } else if ($millis < 60 * 60 * 1000) { return floor($millis / (60 * 1000)) . 'min'; } else if ($millis < 10 * 60 * 60 * 1000) { return number_format($millis / (60 * 60 * 1000), 2) . ' hours'; } else { return floor($millis / (60 * 60 * 1000)) . ' hours'; } } function includeScriptOnce($script, $echo = true, $attr=false) { global $REGISTERED_SCRIPTS; if ($echo) { if (in_array($script, $REGISTERED_SCRIPTS)) return false; $REGISTERED_SCRIPTS []= $script; echo ""; return true; } else { if (in_array($script, $REGISTERED_SCRIPTS)) return ''; $REGISTERED_SCRIPTS []= $script; return ""; } } function printCSS() { global $CSS_BASE; echo ''; } function isProd() { global $CONFIG; return $CONFIG['prod']; } function convertCountryToFlag($country) { $country = trim(strtolower($country)); if ($country === 'italy') return '/data/images/flags/013-italy.svg'; if ($country === 'china') return '/data/images/flags/034-china.svg'; if ($country === 'japan') return '/data/images/flags/063-japan.svg'; if ($country === 'un') return '/data/images/flags/082-united-nations.svg'; if ($country === 'south korea') return '/data/images/flags/094-south-korea.svg'; if ($country === 'spain') return '/data/images/flags/128-spain.svg'; if ($country === 'norway') return '/data/images/flags/143-norway.svg'; if ($country === 'Czech') return '/data/images/flags/149-czech-republic.svg'; if ($country === 'germany') return '/data/images/flags/162-germany.svg'; if ($country === 'sweden') return '/data/images/flags/184-sweden.svg'; if ($country === 'france') return '/data/images/flags/195-france.svg'; if ($country === 'switzerland') return '/data/images/flags/205-switzerland.svg'; if ($country === 'england') return '/data/images/flags/216-england.svg'; if ($country === 'usa') return '/data/images/flags/226-united-states.svg'; if ($country === 'america') return '/data/images/flags/226-united-states.svg'; if ($country === 'canada') return '/data/images/flags/243-canada.svg'; if ($country === 'russia') return '/data/images/flags/248-russia.svg'; if ($country === 'eu') return '/data/images/flags/259-european-union.svg'; if ($country === 'uk') return '/data/images/flags/260-united-kingdom.svg'; return null; } function convertLanguageToFlag($lang) { $lang = trim(strtolower($lang)); if ($lang === 'italian') return '/data/images/flags/013-italy.svg'; if ($lang === 'english') return '/data/images/flags/226-united-states.svg'; if ($lang === 'french') return '/data/images/flags/195-france.svg'; if ($lang === 'german') return '/data/images/flags/162-germany.svg'; if ($lang === 'spanish') return '/data/images/flags/128-spain.svg'; return null; } function setLoginCookie($user, $pass) { $expires = time() + (24*60*60); // 24h $hash = hash('sha256', $user . ';' . $pass); setcookie('mikescher_auth', $hash, $expires); } function isLoggedInByCookie() { static $_loginCache = null; if ($_loginCache !== null) return $_loginCache; global $CONFIG; if (key_exists('mikescher_auth', $_COOKIE)) { if (strlen($_COOKIE['mikescher_auth']) !== 64) return $_loginCache = false; $auth = hash('sha256', $CONFIG['admin_username'] . ';' . $CONFIG['admin_password']); if ($auth === $_COOKIE['mikescher_auth']) return $_loginCache = true; } return $_loginCache = false; } function clearLoginCookie() { setcookie("mikescher_auth", "", time()+30); }