234 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			234 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /*
 | |
| HLstatsX Community Edition - Real-time player and clan rankings and statistics
 | |
| Copyleft (L) 2008-20XX Nicholas Hastings (nshastings@gmail.com)
 | |
| http://www.hlxcommunity.com
 | |
| 
 | |
| HLstatsX Community Edition is a continuation of 
 | |
| ELstatsNEO - Real-time player and clan rankings and statistics
 | |
| Copyleft (L) 2008-20XX Malte Bayer (steam@neo-soft.org)
 | |
| http://ovrsized.neo-soft.org/
 | |
| 
 | |
| ELstatsNEO is an very improved & enhanced - so called Ultra-Humongus Edition of HLstatsX
 | |
| HLstatsX - Real-time player and clan rankings and statistics for Half-Life 2
 | |
| http://www.hlstatsx.com/
 | |
| Copyright (C) 2005-2007 Tobias Oetzel (Tobi@hlstatsx.com)
 | |
| 
 | |
| HLstatsX is an enhanced version of HLstats made by Simon Garner
 | |
| HLstats - Real-time player and clan rankings and statistics for Half-Life
 | |
| http://sourceforge.net/projects/hlstats/
 | |
| Copyright (C) 2001  Simon Garner
 | |
|             
 | |
| This program is free software; you can redistribute it and/or
 | |
| modify it under the terms of the GNU General Public License
 | |
| as published by the Free Software Foundation; either version 2
 | |
| of the License, or (at your option) any later version.
 | |
| 
 | |
| This program is distributed in the hope that it will be useful,
 | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| GNU General Public License for more details.
 | |
| 
 | |
| You should have received a copy of the GNU General Public License
 | |
| along with this program; if not, write to the Free Software
 | |
| Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 | |
| 
 | |
| For support and installation notes visit http://www.hlxcommunity.com
 | |
| */
 | |
| 
 | |
| define('IN_HLSTATS', true);
 | |
| require('config.php');
 | |
| $historical_cache=0;
 | |
| if(defined('HISTORICAL_CACHE'))
 | |
| {
 | |
| 	$historical_cache=constant('HISTORICAL_CACHE');
 | |
| }
 | |
| 
 | |
| if($historical_cache==1)
 | |
| {
 | |
| 	$rawmd5=md5(http_build_query($_REQUEST));
 | |
| 	$dir1=substr($rawmd5,0,1);
 | |
| 	$dir2=substr($rawmd5,1,1);
 | |
| 	$cachetarget=sprintf("cache/%s/%s/%s", $dir1, $dir2, $rawmd5);
 | |
| 
 | |
| 	@mkdir("cache/$dir1");
 | |
| 	@mkdir("cache/$dir1/$dir2");
 | |
| 
 | |
| 	if(file_exists($cachetarget))
 | |
| 	{
 | |
| 		file_put_contents("cache/cachehit",$cachetarget . "\n", FILE_APPEND);
 | |
| 		echo file_get_contents($cachetarget);
 | |
| 		die;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| session_start();
 | |
| 
 | |
| if((!empty($_GET['logout'])) && $_GET['logout'] == '1') {
 | |
|         unset($_SESSION['loggedin']);
 | |
|         header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']);
 | |
|         die;
 | |
| }
 | |
| 
 | |
| // Several stuff added by Malte Bayer
 | |
| global $scripttime, $siteurlneo;
 | |
| $scripttime = microtime(true);
 | |
| $siteurlneo='http://'.$_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'],0,strpos($_SERVER['PHP_SELF'],strrchr($_SERVER['PHP_SELF'],'/'))+1);
 | |
| $siteurlneo=str_replace('\\','/',$siteurlneo);
 | |
| 
 | |
| // Several Stuff end
 | |
| 
 | |
| foreach ($_SERVER as $key => $entry) {
 | |
| 	if ($key !== 'HTTP_COOKIE') {
 | |
| 		$search_pattern  = array('/<script>/', '/<\/script>/', '/[^A-Za-z0-9.\-\/=:;_?#&~]/');
 | |
| 		$replace_pattern = array('', '', '');
 | |
| 		$entry = preg_replace($search_pattern, $replace_pattern, $entry);
 | |
|   
 | |
| 		if ($key == "PHP_SELF") {
 | |
| 			if ((strrchr($entry, '/') !== '/hlstats.php') &&
 | |
| 				(strrchr($entry, '/') !== '/ingame.php') &&
 | |
| 				(strrchr($entry, '/') !== '/show_graph.php') &&
 | |
| 				(strrchr($entry, '/') !== '/sig.php') &&
 | |
| 				(strrchr($entry, '/') !== '/sig2.php') &&
 | |
| 				(strrchr($entry, '/') !== '/index.php') &&
 | |
| 				(strrchr($entry, '/') !== '/status.php') &&
 | |
| 				(strrchr($entry, '/') !== '/top10.php') &&
 | |
| 				(strrchr($entry, '/') !== '/config.php') &&
 | |
| 				(strrchr($entry, '/') !== '/') &&
 | |
| 				($entry !== '')) {
 | |
| 				header("Location: http://$siteurlneo/hlstats.php");    
 | |
| 				exit;
 | |
| 			}    
 | |
| 		}
 | |
| 		$_SERVER[$key] = $entry;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| @header('Content-Type: text/html; charset=utf-8');
 | |
| 
 | |
| // do not report NOTICE warnings
 | |
| @error_reporting(E_ALL ^ E_NOTICE);
 | |
| 
 | |
| ////
 | |
| //// Initialisation
 | |
| ////
 | |
| 
 | |
| define('PAGE', 'HLSTATS');
 | |
| 
 | |
| ///
 | |
| /// Classes
 | |
| ///
 | |
| 
 | |
| // Load required files
 | |
| require(INCLUDE_PATH . '/class_db.php');
 | |
| require(INCLUDE_PATH . '/class_table.php');
 | |
| require(INCLUDE_PATH . '/functions.php');
 | |
| 
 | |
| $db_classname = 'DB_' . DB_TYPE;
 | |
| if ( class_exists($db_classname) )
 | |
| {
 | |
| 	$db = new $db_classname(DB_ADDR, DB_USER, DB_PASS, DB_NAME, DB_PCONNECT);
 | |
| }
 | |
| else
 | |
| {
 | |
| 	error('Database class does not exist.  Please check your config.php file for DB_TYPE');
 | |
| }
 | |
| 
 | |
| $g_options = getOptions();
 | |
| 
 | |
| if (!isset($g_options['scripturl'])) {
 | |
| 	$g_options['scripturl'] = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : getenv('PHP_SELF');
 | |
| }
 | |
| 
 | |
| ////
 | |
| //// Main
 | |
| ////
 | |
| 
 | |
| $game = valid_request(isset($_GET['game'])?$_GET['game']:'', 0);
 | |
| 
 | |
| if (!$game)
 | |
| {
 | |
| 	$game = isset($_SESSION['game'])?$_SESSION['game']:'';
 | |
| }
 | |
| else
 | |
| {
 | |
| 	$_SESSION['game'] = $game;
 | |
| }
 | |
| 
 | |
| if (!$realgame && $game)
 | |
| {
 | |
| 	$realgame = getRealGame($game);
 | |
| 	$_SESSION['realgame'] = $realgame;
 | |
| }
 | |
| 
 | |
| $mode = isset($_GET['mode'])?$_GET['mode']:'';
 | |
| 
 | |
| $valid_modes = array(
 | |
| 	'players',
 | |
| 	'clans',
 | |
| 	'weapons',
 | |
| 	'roles',
 | |
| 	'rolesinfo',
 | |
| 	'maps',
 | |
| 	'actions',
 | |
| 	'claninfo',
 | |
| 	'playerinfo',
 | |
| 	'weaponinfo',
 | |
| 	'mapinfo',
 | |
| 	'actioninfo',
 | |
| 	'playerhistory',
 | |
| 	'playersessions',
 | |
| 	'playerawards',
 | |
| 	'search',
 | |
| 	'admin',
 | |
| 	'help',
 | |
| 	'bans',
 | |
| 	'servers',
 | |
| 	'chathistory',
 | |
| 	'ranks',
 | |
| 	'rankinfo',
 | |
| 	'ribbons',
 | |
| 	'ribboninfo',
 | |
| 	'chat',
 | |
| 	'globalawards',
 | |
| 	'awards',
 | |
| 	'dailyawardinfo',
 | |
| 	'countryclans',
 | |
| 	'countryclansinfo',
 | |
| 	'teamspeak',
 | |
| 	'ventrilo',
 | |
| 	'updater',
 | |
| 	'profile'
 | |
| );
 | |
|    
 | |
| if (file_exists('./updater') && $mode != 'updater')
 | |
| {
 | |
| 	pageHeader(array('Update Notice'), array('Update Notice' => ''));
 | |
| 	echo "<div class=\"warning\">\n" . 
 | |
| 	"<span class=\"warning-heading\"><img src=\"".IMAGE_PATH."/warning.gif\" alt=\"Warning\"> Warning:</span><br />\n" .
 | |
| 	"<span class=\"warning-text\">The updater folder was detected in your web directory.<br />
 | |
| 	To perform a Database Update, please go to <strong><a href=\"{$g_options['scripturl']}?mode=updater\">HLX:CE Database Updater</a></strong> to perform the database update.<br /><br />
 | |
| 	<strong>If you have already performed the database update, <strong>you must delete the \"updater\" folder from your web folder.</span>\n</div>";
 | |
| 	pageFooter();
 | |
| 	die();
 | |
| }
 | |
|    
 | |
| if ( !in_array($mode, $valid_modes) )
 | |
| {
 | |
| 	$mode = 'contents';
 | |
| }
 | |
| 
 | |
| if ( file_exists(PAGE_PATH . "/$mode.php") )
 | |
| {
 | |
| 	@include(PAGE_PATH . "/$mode.php");
 | |
| 	pageFooter();
 | |
| }
 | |
| else
 | |
| {
 | |
| 	header('HTTP/1.1 404 File Not Found', false, 404);
 | |
| 	error('Unable to find ' . PAGE_PATH . "/$mode.php");
 | |
| 	pageFooter();
 | |
| }
 | |
| 
 | |
| ?>
 |