From 40dfa7d5c0dc8e4cb2c95e403b6b4b2c4bf70644 Mon Sep 17 00:00:00 2001 From: Matthijs Kuiper Date: Sat, 4 Feb 2017 16:05:45 +0100 Subject: Original UTStats beta 4.2.8 --- html/includes/functions.php | 605 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 605 insertions(+) create mode 100755 html/includes/functions.php (limited to 'html/includes/functions.php') diff --git a/html/includes/functions.php b/html/includes/functions.php new file mode 100755 index 0000000..1975914 --- /dev/null +++ b/html/includes/functions.php @@ -0,0 +1,605 @@ +=")) ? true : false; + + if ($use_fgets and $compression == 'none') { + if ($length == -1) { + return(fgets($fp)); + } else { + return(fgets($fp, $length)); + } + } + + $buffer = ''; + $i = 0; + while(!feof($fp)) { + if ($length != -1 and $i >= $length) break; + $i++; + switch($compression) { + case 'bz2': $char = bzread($fp, 1); break; + case 'zlib': $char = gzread($fp, 1); break; + default: $char = fread($fp, 1); + } + $buffer .= $char; + if ($char == "\n") break; + } + if (empty($buffer) and feof($fp)) return(false); + return($buffer); +} + +function my_fopen($filename, $mode, &$compression) { + if ($compression === NULL) { + $compression = 'none'; + if (substr($filename, -4) == '.bz2') { + if (check_extension('bz2')) { + $compression = 'bz2'; + } else { + return(false); + } + } + if (substr($filename, -3) == '.gz') { + if (check_extension('zlib')) { + $compression = 'zlib'; + } else { + return(false); + } + } + } + + switch($compression) { + case 'bz2': $fp = @bzopen($filename, $mode); break; + case 'zlib': $fp = @gzopen($filename, $mode); break; + default: $fp = @fopen($filename, $mode); break; + } + return($fp); +} + + +function my_fclose($fp, $compression) { + switch($compression) { + case 'bz2': return(@bzclose($fp)); + case 'zlib': return(@gzclose($fp)); + default: return(@fclose($fp)); + } + +} + + +// Small query +function small_query($query) { + $sql_small = "$query"; + $q_small = mysql_query($sql_small) or die(mysql_error()); + $r_small = mysql_fetch_array($q_small); + return $r_small; +} + +// Small query count +function small_count($query) { + $sql_small = "$query"; + $q_small = mysql_query($sql_small) or die(mysql_error()); + $r_small = mysql_num_rows($q_small); + return $r_small; +} + +// uid generator +function str_rand($length = 8, $seeds = 'abcdefghijklmnopqrstuvwxyz0123456789') +{ + $str = ''; + $seeds_count = strlen($seeds); + + // Seed + list($usec, $sec) = explode(' ', microtime()); + $seed = (float) $sec + ((float) $usec * 100000); + mt_srand($seed); + + // Generate + for ($i = 0; $length > $i; $i++) { + $str .= $seeds{mt_rand(0, $seeds_count - 1)}; + } + + return $str; +} + +function zero_out($data) { + if (!is_array($data)) return($data); + foreach($data as $key => $value) { + if ($value == '0') $data[$key] = ''; + } + return($data); +} + +function get_dp($number) { + $dp = number_format($number, 2, '.', ''); + return ($dp); +} + +function sec2min($number) { + $dp = $number/60; + + $dp = number_format($dp, 2, '.', ''); + return ($dp); +} + +function sec2hour($number) { + $dp = $number/3600; + + $dp = number_format($dp, 2, '.', ''); + return ($dp); +} + +function un_ut($name) { + $gname = str_replace("Botpack.", "", "$name"); + $gname = str_replace("Class ", "", "$gname"); + $gname = str_replace("CTFGame", "Capture The Flag", "$gname"); + $gname = str_replace(".unr", "", "$gname"); + return ($gname); +} + +function mtimestamp($date) { + $hour = substr($date, 8, 2); + $minute = substr($date, 10, 2); + $second = 00; + $day = substr($date, 6, 2); + $month = substr($date, 4, 2); + $year = substr($date, 0, 4); + + return(mktime($hour,$minute,$second,$month,$day,$year)); +} + +function mdate($date) { + + $ourdate = date('D, M j Y \a\t g:i a', mtimestamp($date)); + return ($ourdate); +} + +function mdate2($date) { + $hour = substr("$date", 8, 2); + $minute = substr("$date", 10, 2); + $second = "00"; + $day = substr("$date", 6, 2); + $month = substr("$date", 4, 2); + $year = substr("$date", 0, 4); + + $ourdate = mktime($hour,$minute,$second,$month,$day,$year); + + $ourdate = date('Y-m-d g:i a', $ourdate); + return ($ourdate); +} + +function utdate($gametime) { + $year = substr("$gametime", 0, 4); + $month = substr("$gametime", 5, 2); + $day = substr("$gametime", 8, 2); + $hour = substr("$gametime", 11, 2); + $minute = substr("$gametime", 14, 2); + $second = substr("$gametime", 17, 2); + + $gametime = $year . $month . $day . $hour . $minute . $second; + return ($gametime); +} + +function btcaptime($time) { + if (empty($time)) { + return; + } + if ($time < 0) { + return "-:--"; + } + $minutes = intval($time / 60); + $seconds = intval($time % 60); + $hundreds = substr($time, -2, 2); + if (substr($hundreds, 0, 1) == '.') { + $hundreds = substr($hundreds, 1, 1) . 0; + } + if ((substr($hundreds, 1, 1) == '.') or (!preg_match("/\./", $time))) { + $hundreds = "00"; + } + if ($seconds < 10) { + $seconds = "0" . $seconds; + } + return $minutes . ":" . $seconds . ":" . $hundreds; +} + +// UT Server Query Functions +function GetItemInfo ($itemname, $itemchunks) +{ + + $retval = "N/A"; + for ($i = 0; $i < count($itemchunks); $i++) { + //Found this item + + if (strcasecmp($itemchunks[$i], $itemname) == 0) { + $retval = $itemchunks[$i+1]; + + } + } + + //Return value + return $retval; +} + +function GetMinutes($seconds) +{ + $timemins = intval($seconds / 60); + $timesecs = ($seconds % 60); + + $Reqlength = 2; //Amount of digits we need + if ($Reqlength-strlen($timemins) > 0) $timemins = str_repeat("0",($Reqlength-strlen($timemins))) . $timemins; + if ($Reqlength-strlen($timesecs) > 0) $timesecs = str_repeat("0",($Reqlength-strlen($timesecs))) . $timesecs; + return $timemins . ":" . $timesecs; +} + + +function FlagImage($country, $mini = true) { + global $a_countries; + $width = ($mini) ? 15 : 18; + $height = ($mini) ? 10 : 12; + if (empty($country)) return(''); + if (!file_exists("images/flags/$country.png")) return(''); //18*12 + $countryname = (isset($a_countries[$country])) ? $a_countries[$country] : ''; + return(''. $country .''); +} + + +function RankMovement($diff) { + $diff = round($diff, 2); + if ($diff == 0) { + $chimg = 'same'; + $chtext = "ranking not affected"; + } + if ($diff > 0) { + $chimg = 'up'; + $chtext = "gained ". get_dp($diff) ." ranking points"; + } + if ($diff < 0) { + $chimg = 'down'; + $chtext = "lost ". get_dp($diff * -1) ." ranking points"; + } + $moveimg = ''; + if (file_exists("images/ranks/$chimg.png")) { + $infos = getimagesize("images/ranks/$chimg.png"); + $width = $infos[0]; + $height = $infos[1]; + $moveimg = ''; + } + return($moveimg); +} + + +function ordinal($number) { + + // when fed a number, adds the English ordinal suffix. Works for any + // number, even negatives + + if ($number % 100 > 10 && $number %100 < 14): + $suffix = "th"; + else: + switch($number % 10) { + + case 0: + $suffix = "th"; + break; + + case 1: + $suffix = "st"; + break; + + case 2: + $suffix = "nd"; + break; + + case 3: + $suffix = "rd"; + break; + + default: + $suffix = "th"; + break; + } + + endif; + + return $suffix; +} + + +function RankImageOrText($pid, $name, $rank, $gid, $gamename, $mini = true, $format = NULL, $rankchange = NULL) { + + $points = 0; + if (empty($rank)) { + $r_rank = small_query("SELECT rank FROM uts_rank WHERE pid = '$pid' AND gid= '$gid';"); + if (!$r_rank) return(''); + $points = get_dp($r_rank['rank']); + $r_no = small_query("SELECT (COUNT(*) + 1) AS no FROM uts_rank WHERE gid = '$gid' and rank > ${points}9"); + $rank = $r_no['no']; + } + + $ranktext = $rank.ordinal($rank); + if (file_exists("images/ranks/$rank.png")) { + $width = ($mini) ? 14 : 16; + $height = ($mini) ? 10 : 13; + $img = ''. $rank .''; + } else { + $img = ''; + } + $moveimg = ''; + if ($rankchange !== NULL) { + $moveimg = ' '. RankMovement($rankchange); + } + + + if (empty($format)) { + if ($img) { + return($img.$moveimg); + } else { + return('('.$ranktext.$moveimg.')'); + } + } + $imageortext = ($img) ? $img : $ranktext; + $search = array('%RT%', '%RN%', '%RP%', '%RI%', '%GN%', '%PN%', '%IT%'); + $replace = array($ranktext, $rank, $points, $img, $gamename, $name, $imageortext); + return(str_replace($search, $replace, $format)); +} + + +function FormatPlayerName($country, $pid, $name, $gid = NULL, $gamename = NULL, $mini = true, $rankchange = NULL) { + static $cache = array(); + + if (isset($cache[$pid])) return($cache[$pid]); + + $ranktext = false; + if (!empty($gamename) and $pid !== NULL) { + $ranktext = RankImageOrText($pid, $name, 0, $gid, $gamename, $mini, NULL, $rankchange); + } + $ret = ''; + if (!empty($country)) $ret .= FlagImage($country, $mini) ." "; + $ret .= htmlentities($name); + if ($ranktext) $ret .= " " . $ranktext; + $cache[$pid] = $ret; + return($ret); +} + +function QuoteHintText($text) { + $search = array('\\', '\'', '(', ')'); + $replace = array('\\\\', '\\\'', '\\(', '\\)'); + return(str_replace($search, $replace, $text)); +} + + +function OverlibPrintHint($name, $text = NULL, $caption = NULL) { + include(dirname(__FILE__) .'/hints.php'); + if (!isset($hint[$name]) and empty($text)) return(''); + if ($text === NULL) $text = $hint[$name]['text']; + if ($caption === NULL and isset($hint[$name]['caption'])) $caption = $hint[$name]['caption']; + $rv = 'onmouseover="return overlib(\''. QuoteHintText($text) .'\''; + if ($caption !== NULL) $rv .= ', CAPTION, \''. QuoteHintText($caption) .'\''; + $rv .= ');" '; + $rv .= 'onmouseout="return nd();"'; + return($rv); +} + +function debug_output($desc, $data) { + echo '
';
+	echo $desc .": ";
+
+	$len = strlen($data);
+	for ($i = 0; $i < $len; $i++) {
+		echo substr($data, $i, 1) .'  ';
+	}
+	echo "\n";
+	echo str_repeat(' ', (strlen($desc) + 2));
+	for ($i = 0; $i < $len; $i++) {
+		echo ord(substr($data, $i, 1)) .' ';
+	}
+	echo "
"; +} + +function check_extension($name) { + if (extension_loaded($name)) return(true); + if( !(bool)ini_get("enable_dl") or (bool)ini_get( "safe_mode" )) return(false); + $prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : ''; + return(@dl($prefix . $name . PHP_SHLIB_SUFFIX)); +} + + +function compress_file($method, $in, $out, $stripx00) { + if ((!file_exists($out) and !is_writeable(dirname($out))) or (file_exists($out) and !is_writable($out))) return(false); + $blocksize = 8192; + + switch($method) { + case 'bz2': $suffix = '.bz2'; break; + case 'zlib': $suffix = '.gz'; break; + case 'none': $suffix = ''; break; + default: return(false); + } + + if (substr($out, strlen($out) - strlen($suffix)) != $suffix) $out .= $suffix; + + $fp_in = fopen($in, 'rb'); + if (!$fp_in) return(false); + switch($method) { + case 'bz2': $fp_out = @bzopen($out, 'wb'); break; + case 'zlib': $fp_out = @gzopen($out, 'wb6'); break; + case 'none': $fp_out = @fopen($out, 'wb'); break; + } + if (!$fp_out) return(false); + + while (!feof($fp_in)) { + $buffer = @fread($fp_in, $blocksize); + if ($buffer === false) return(false); + if ($stripx00) $buffer = preg_replace('/[\x00]/', '', $buffer); + switch($method) { + case 'bz2': $bytes = @bzwrite($fp_out, $buffer, strlen($buffer)); break; + case 'zlib': $bytes = @gzwrite($fp_out, $buffer, strlen($buffer)); break; + case 'none': $bytes = @fwrite($fp_out, $buffer, strlen($buffer)); break; + } + if ($bytes === false) return(false); + } + + + @fclose($fp_in); + switch($method) { + case 'bz2': @bzclose($fp_out); break; + case 'zlib': @gzclose($fp_out); break; + case 'none': @fclose($fp_out); break; + } + return(true); +} + +function backup_logfile($method, $filename, $backupfilename, $stripx00) { + switch($method) { + case 'compress': + if (!check_extension('bz2') or !compress_file('bz2', $filename, $backupfilename, $stripx00)) { + return(backup_logfile('gzip', $filename, $backupfilename, $stripx00)); + } + return('Succeeded (bz2)'); + break; + + case 'gzip': + if (!check_extension('zlib') or !compress_file('zlib', $filename, $backupfilename, $stripx00)) { + return(backup_logfile('yes', $filename, $backupfilename, $stripx00)); + } + return('Succeeded (gzip)'); + break; + + case 'no': + return('NO (disabled in config)'); + break; + + default: + if ($stripx00) { + if (compress_file('none', $filename, $backupfilename, $stripx00)) { + return('Succeeded (uncompressed)'); + } else { + return('FAILED' . (!empty($php_errormsg) ? ': '. $php_errormsg : '')); + } + } + if (@copy($filename, $backupfilename)) { + return('Succeeded (uncompressed)'); + } else { + return('FAILED' . (!empty($php_errormsg) ? ': '. $php_errormsg : '')); + } + } +} + +function purge_backups($dir, $maxage) { + if (empty($maxage) or rand(0, 5) != 0) return(NULL); + + // $maxage is days but we need seconds + $maxage = $maxage * 86400; + $deleted = 0; + + $dh = opendir($dir); + while (false !== ($filename = readdir($dh))) { + if ($filename == '.htaccess' or $filename == 'index.htm') continue; + $cna = $dir .'/'. $filename; + if (@is_file($cna) and (@filemtime($cna) + $maxage) < time()) { + unlink($cna); + $deleted++; + } + + } + closedir($dh); + + return($deleted); +} + + +function file_size_info($filesize) { + $bytes = array('KB', 'KB', 'MB', 'GB', 'TB'); # values are always displayed + if ($filesize < 1024) $filesize = 1; # in at least kilobytes. + for ($i = 0; $filesize > 1024; $i++) $filesize /= 1024; + $file_size_info['size'] = ceil($filesize); + $file_size_info['type'] = $bytes[$i]; + return $file_size_info; +} + +function GetCurrentWatchlist() { + if (!isset($_COOKIE['uts_watchlist'])) return(array()); + $watchlist = @explode(',', $_COOKIE['uts_watchlist']); + if (!$watchlist or !is_array($watchlist)) return(array()); + foreach($watchlist as $key => $value) { + $watchlist[$key] = addslashes($value); + } + return($watchlist); +} + +function PlayerOnWatchlist($pid) { + $watchlist = GetCurrentWatchlist(); + return(in_array($pid, $watchlist)); +} + +function ToggleWatchStatus($pid) { + $watchlist = GetCurrentWatchlist(); + + if (in_array($pid, $watchlist)) { + $key = array_search($pid, $watchlist); + unset($watchlist[$key]); + $status = 0; + } else { + $watchlist[] = $pid; + $status = 1; + } + setcookie('uts_watchlist', implode(',',$watchlist), time()+60*60*24*30*365*5); + return($status); +} + +function DeBugMessage($message) { + global $debug, $html; + if(!$debug) { + return; + } + + if ($html) echo '
'; + echo "Debugging Output:\n"; + if ($html) echo '
';
+	echo $message . "\n";
+	if ($html) echo '


'; +} + +?> -- cgit