159 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			159 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);
 | |
| 
 | |
| 	// Load database classes
 | |
| 	require ('config.php');
 | |
| 	require (INCLUDE_PATH . '/class_db.php');
 | |
| 	require (INCLUDE_PATH . '/functions.php');
 | |
| 	require (INCLUDE_PATH . '/pChart/pData.class');
 | |
| 	require (INCLUDE_PATH . '/pChart/pChart.class');
 | |
| 
 | |
| 	$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();
 | |
| 	
 | |
| 	$bg_color = array('red' => 90, 'green' => 90, 'blue' => 90);
 | |
| 	if ((isset($_GET['bgcolor'])) && (is_string($_GET['bgcolor'])))
 | |
| 		$bg_color = hex2rgb(valid_request($_GET['bgcolor'], 0));
 | |
| 
 | |
| 	$color = array('red' => 213, 'green' => 217, 'blue' => 221);
 | |
| 	if ((isset($_GET['color'])) && (is_string($_GET['color'])))
 | |
| 		$color = hex2rgb(valid_request($_GET['color'], 0));
 | |
| 	
 | |
| 	if (isset($_GET['player'])) $player = (int)$_GET['player'];
 | |
| 	if (!$player) exit();
 | |
| 	
 | |
| 	$res = $db->query("SELECT UNIX_TIMESTAMP(eventTime) AS ts, skill, skill_change FROM hlstats_Players_History WHERE playerId = '$player' ORDER BY eventTime DESC LIMIT 30");
 | |
| 	$skill = array();
 | |
| 	$skill_change = array();
 | |
| 	$date = array();
 | |
| 	$rowcnt = $db->num_rows();
 | |
| 	$last_time = 0;
 | |
| 	for ($i = 1; $i <= $rowcnt; $i++)
 | |
| 	{
 | |
| 		$row = $db->fetch_array($res);
 | |
| 		array_unshift($skill, ($row['skill']==0)?0:($row['skill']/1000));
 | |
| 		array_unshift($skill_change, $row['skill_change']);
 | |
| 		if ($i == 1 || $i == round($rowcnt/2) || $i == $rowcnt)
 | |
| 		{
 | |
| 			array_unshift($date, date("M-j", $row['ts']));
 | |
| 			$last_time = $row['ts'];
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			array_unshift($date, '');
 | |
| 		}
 | |
| 	}
 | |
| 	
 | |
| 	$cache_image = IMAGE_PATH . "/progress/trend_{$player}_{$last_time}.png";
 | |
| 	if (file_exists($cache_image))
 | |
| 	{
 | |
| 		header('Content-type: image/png');
 | |
| 		readfile($cache_image);
 | |
| 		exit();
 | |
| 	}
 | |
| 	
 | |
| 	$Chart = new pChart(400, 200);
 | |
| 	$Chart->drawBackground($bg_color['red'], $bg_color['green'], $bg_color['blue']);
 | |
| 	
 | |
| 	$Chart->setGraphArea(40, 28, 339, 174);
 | |
| 	$Chart->drawGraphAreaGradient(40, 40, 40, -50);
 | |
| 	
 | |
| 	if (count($date) < 2)
 | |
| 	{
 | |
| 		$Chart->setFontProperties(IMAGE_PATH . '/sig/font/DejaVuSans.ttf', 11);
 | |
| 		$Chart->drawTextBox(100, 90, 180, 110, "Not Enough Session Data", 0, 0, 0, 0, ALIGN_LEFT, FALSE, 255, 255, 255, 0);
 | |
| 	}
 | |
| 	else
 | |
| 	{	
 | |
| 		$DataSet = new pData;
 | |
| 		$DataSet->AddPoint($skill, 'SerieSkill');
 | |
| 		$DataSet->AddPoint($skill_change, 'SerieSession');
 | |
| 		$DataSet->AddPoint($date, 'SerieDate');
 | |
| 		$DataSet->AddSerie('SerieSkill');
 | |
| 		$DataSet->SetAbsciseLabelSerie('SerieDate');
 | |
| 		$DataSet->SetSerieName('Skill', 'SerieSkill');
 | |
| 		$DataSet->SetSerieName('Session', 'SerieSession');
 | |
| 
 | |
| 		$Chart->setFontProperties(IMAGE_PATH . '/sig/font/DejaVuSans.ttf', 7);
 | |
| 		$DataSet->SetYAxisName('Skill');
 | |
| 		$DataSet->SetYAxisUnit('K');
 | |
| 		$Chart->setColorPalette(0, 255, 255, 0);
 | |
| 		$Chart->drawRightScale($DataSet->GetData(), $DataSet->GetDataDescription(),
 | |
| 			SCALE_NORMAL, $color['red'], $color['green'], $color['blue'], TRUE, 0, 0);
 | |
| 		$Chart->drawGrid(1, FALSE, 55, 55, 55, 100);
 | |
| 		$Chart->setShadowProperties(3, 3, 0, 0, 0, 30, 4);
 | |
| 		$Chart->drawCubicCurve($DataSet->GetData(), $DataSet->GetDataDescription());
 | |
| 		$Chart->clearShadow();
 | |
| 		$Chart->drawFilledCubicCurve($DataSet->GetData(), $DataSet->GetDataDescription(), .1, 30);
 | |
| 		$Chart->drawPlotGraph($DataSet->GetData(), $DataSet->GetDataDescription(), 1, 1, 255, 255, 255);
 | |
| 		
 | |
| 		$Chart->clearScale();
 | |
| 
 | |
| 		$DataSet->RemoveSerie('SerieSkill');
 | |
| 		$DataSet->AddSerie('SerieSession');
 | |
| 		$DataSet->SetYAxisName('Session');
 | |
| 		$DataSet->SetYAxisUnit('');
 | |
| 		$Chart->setColorPalette(1, 255, 0,   0);
 | |
| 		$Chart->setColorPalette(2,   0, 0, 255);
 | |
| 		$Chart->drawScale($DataSet->GetData(), $DataSet->GetDataDescription(),
 | |
| 			SCALE_NORMAL, $color['red'], $color['green'], $color['blue'], TRUE, 0, 0);
 | |
| 		$Chart->setShadowProperties(3, 3, 0, 0, 0, 30, 4);
 | |
| 		$Chart->drawCubicCurve($DataSet->GetData(), $DataSet->GetDataDescription());
 | |
| 		$Chart->clearShadow();
 | |
| 		$Chart->drawPlotGraph($DataSet->GetData(), $DataSet->GetDataDescription(), 1, 1, 255, 255, 255);
 | |
| 		
 | |
| 		$Chart->setFontProperties(IMAGE_PATH . '/sig/font/DejaVuSans.ttf',7);
 | |
| 		$Chart->drawHorizontalLegend(235, -1, $DataSet->GetDataDescription(),
 | |
| 			0, 0, 0, 0, 0, 0, $color['red'], $color['green'], $color['blue'], FALSE);
 | |
| 	}
 | |
| 	
 | |
| 	$cache_image = IMAGE_PATH . "/progress/trend_{$player}_{$last_time}.png";
 | |
| 	$Chart->Render($cache_image);
 | |
| 	header("Location: $cache_image");
 | |
| ?>
 |