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");
|
||
|
?>
|