diff options
Diffstat (limited to 'localwebsite/functions.php')
-rw-r--r-- | localwebsite/functions.php | 300 |
1 files changed, 0 insertions, 300 deletions
diff --git a/localwebsite/functions.php b/localwebsite/functions.php deleted file mode 100644 index 6868b0d..0000000 --- a/localwebsite/functions.php +++ /dev/null @@ -1,300 +0,0 @@ -<?php - -function param($key) { - global $RouterInput; - - $val = null; - - if (isset($RouterInput[$key])) { - $val = $RouterInput[$key]; - } else if (isset($_POST[$key])) { - $val = $_POST[$key]; - } else if (isset($_GET[$key])) { - $val = $_GET[$key]; - } - - if (is_array($val)) { - $val = implode($val); - } - return $val; -} - -function str_replace_once(string $needle, string $replace, string $haystack): string { - $pos = strpos($haystack, $needle); - if ($pos !== false) { - $haystack = substr_replace($haystack, $replace, $pos, strlen($needle)); - } - return $haystack; -} - -function htmlescape($s) { - if (is_array($s)) { - foreach ($s as $k => $v) { - $s[$k] = htmlescape($v); - } - return $s; - } - return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); -} - -function jsonEncode($obj) { - return json_encode($obj, JSON_UNESCAPED_UNICODE); -} - -function jsonDecode($json) { - return json_decode($json, true); -} - -function startsWith(string $haystack, string $needle): bool { - return $needle === "" || strpos($haystack, $needle) === 0; -} - -function endsWith(string $haystack, string $needle): bool { - return $needle === "" || substr($haystack, -strlen($needle)) === $needle; -} - -function exectime($format = null) { - $time = round(microtime(true) - START_TIME, 4); - if (!is_null($format)) { - $time = sprintf($format, $time); - } - return $time; -} - -function stransi($s) { - static $colors = [ - 'black' => 0, - 'red' => 1, - 'green' => 2, - 'yellow' => 3, - 'blue' => 4, - 'magenta' => 5, - 'cyan' => 6, - 'white' => 7 - ]; - static $valid_styles = ['bold', 'fgbright', 'bgbright']; - - $s = preg_replace_callback('/<(?:e ([a-z, =]+)|\/e)>/', function($match) use ($colors, $valid_styles) { - if (empty($match[1])) { - return "\033[0m"; - } else { - $codes = []; - $args = preg_split('/ +/', $match[1]); - $fg = null; - $bg = null; - $styles = []; - foreach ($args as $arg) { - list($argname, $argvalue) = explode('=', $arg); - $err = false; - if ($argname == 'fg' || $argname == 'bg') { - if (isset($colors[$argvalue])) { - $$argname = $colors[$argvalue]; - } else { - $err = true; - } - } else if ($argname == 'style') { - $argstyles = array_filter(explode(',', $argvalue)); - foreach ($argstyles as $style) { - if (!in_array($style, $valid_styles)) { - $err = true; - break; - } - } - if (!$err) { - foreach ($argstyles as $style) { - $styles[$style] = true; - } - } - } else { - $err = true; - } - - if ($err) { - trigger_error(__FUNCTION__.": unrecognized argument {$arg}", E_USER_WARNING); - } - } - - if (!is_null($fg)) { - $codes[] = $fg + (isset($styles['fgbright']) ? 90 : 30); - } - if (!is_null($bg)) { - $codes[] = $bg + (isset($styles['bgbright']) ? 100 : 40); - } - if (isset($styles['bold'])) { - $codes[] = 1; - } - - return !empty($codes) ? "\033[".implode(';', $codes)."m" : ''; - } - }, $s); - return $s; -} - -function strgen($len = 10): string { - $buf = ''; - for ($i = 0; $i < $len; $i++) { - $j = mt_rand(0, 61); - if ($j >= 36) { - $j += 13; - } else if ($j >= 10) { - $j += 7; - } - $buf .= chr(48 + $j); - } - return $buf; -} - -function setperm($file, $is_dir = null) { - global $config; - - // chgrp - $gid = filegroup($file); - $gname = posix_getgrgid($gid); - if (!is_array($gname)) { - debugError(__FUNCTION__.": posix_getgrgid() failed on $gid", $gname); - } else { - $gname = $gname['name']; - } - if ($gname != $config['group']) { - if (!chgrp($file, $config['group'])) { - debugError(__FUNCTION__.": chgrp() failed on $file"); - } - } - - // chmod - $perms = fileperms($file); - $need_perms = is_dir($file) ? $config['dirs_mode'] : $config['files_mode']; - if (($perms & $need_perms) !== $need_perms) { - if (!chmod($file, $need_perms)) { - debugError(__FUNCTION__.": chmod() failed on $file"); - } - } -} - -function redirect($url, $preserve_utm = true, $no_ajax = false) { - if (PHP_SAPI != 'cli' && $_SERVER['REQUEST_METHOD'] == 'GET' && $preserve_utm) { - $proxy_params = ['utm_source', 'utm_medium', 'utm_content', 'utm_campaign']; - $params = []; - foreach ($proxy_params as $p) { - if (!empty($_GET[$p])) { - $params[$p] = (string)$_GET[$p]; - } - } - if (!empty($params)) { - if (($anchor_pos = strpos($url, '#')) !== false) { - $anchor = substr($url, $anchor_pos+1); - $url = substr($url, 0, $anchor_pos); - } - $url .= (strpos($url, '?') === false ? '?' : '&').http_build_query($params); - if ($anchor_pos !== false) { - $url .= '#'.$anchor; - } - } - } - - header('Location: ' . $url); - exit; -} - -function is_xhr_request(): bool { - return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'; -} - -function secondsToTime(int $n): string { - $parts = []; - - if ($n >= 86400) { - $days = floor($n / 86400); - $n %= 86400; - $parts[] = "{$days}д"; - } - - if ($n >= 3600) { - $hours = floor($n / 3600); - $n %= 3600; - $parts[] = "{$hours}ч"; - } - - if ($n >= 60) { - $minutes = floor($n / 60); - $n %= 60; - $parts[] = "{$minutes}мин"; - } - - if ($n) - $parts[] = "{$n}сек"; - - return implode(' ', $parts); -} - -function bytesToUnitsLabel(GMP $b): string { - $ks = array('B', 'Kb', 'Mb', 'Gb', 'Tb'); - foreach ($ks as $i => $k) { - if (gmp_cmp($b, gmp_pow(1024, $i + 1)) < 0) { - if ($i == 0) - return gmp_strval($b) . ' ' . $k; - - $n = gmp_intval(gmp_div_q($b, gmp_pow(1024, $i))); - return round($n, 2).' '.$k; - } - } - - return gmp_strval($b); -} - -function pwhash(string $s): string { - return hash('sha256', config::get('auth_pw_salt').'|'.$s); -} - -$ShutdownFunctions = []; - -function append_shutdown_function(callable $f) { - global $ShutdownFunctions; - $ShutdownFunctions[] = $f; -} - -function prepend_shutdown_function(callable $f) { - global $ShutdownFunctions; - array_unshift($ShutdownFunctions, $f); -} - -function getDB(): database { - static $link = null; - - if (is_null($link)) - $link = new database(config::get('database_path')); - - return $link; -} - -function to_camel_case(string $input, string $separator = '_'): string { - return lcfirst(str_replace($separator, '', ucwords($input, $separator))); -} - -function from_camel_case(string $s): string { - $buf = ''; - $len = strlen($s); - for ($i = 0; $i < $len; $i++) { - if (!ctype_upper($s[$i])) { - $buf .= $s[$i]; - } else { - $buf .= '_'.strtolower($s[$i]); - } - } - return $buf; -} - -function unsetcookie(string $name) { - global $config; - setcookie($name, null, -1, '/', $config['auth_cookie_host']); -} - -function setcookie_safe(...$args) { - global $config; - if (!headers_sent()) { - if (count($args) == 2) - setcookie($args[0], $args[1], time()+86400*365, '/', $config['auth_cookie_host']); - else - setcookie(...$args); - } -}
\ No newline at end of file |