hlstatsx/web/pages/admintasks/games.php

205 lines
6.5 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
*/
if ( !defined('IN_HLSTATS') ) { die('Do not access this file directly.'); }
if ($auth->userdata["acclevel"] < 80) die ("Access denied!");
function delete_game($game)
{
global $db;
$srvtables = array(
"hlstats_Events_Admin",
"hlstats_Events_ChangeName",
"hlstats_Events_ChangeRole",
"hlstats_Events_ChangeTeam",
"hlstats_Events_Chat",
"hlstats_Events_Connects",
"hlstats_Events_Disconnects",
"hlstats_Events_Entries",
"hlstats_Events_Frags",
"hlstats_Events_Latency",
"hlstats_Events_PlayerActions",
"hlstats_Events_PlayerPlayerActions",
"hlstats_Events_Rcon",
"hlstats_Events_Statsme",
"hlstats_Events_Statsme2",
"hlstats_Events_StatsmeLatency",
"hlstats_Events_StatsmeTime",
"hlstats_Events_Suicides",
"hlstats_Events_TeamBonuses",
"hlstats_Events_Teamkills",
"hlstats_Servers_Config"
);
$pltables = array(
"hlstats_PlayerNames"
);
$dbtables = array(
"hlstats_Actions",
"hlstats_Awards",
"hlstats_Ribbons",
"hlstats_Roles",
"hlstats_Teams",
"hlstats_Weapons",
"hlstats_Ranks",
"hlstats_Maps_Counts",
"hlstats_Servers",
"hlstats_Players_History",
"hlstats_Players_Awards",
"hlstats_Players_Ribbons",
"hlstats_PlayerUniqueIds",
"hlstats_Players",
"hlstats_Clans",
"hlstats_Trend"
);
$resultServers = $db->query("SELECT serverId FROM hlstats_Servers WHERE game = '$game'");
if ($db->num_rows($resultServers) > 0)
{
$serverlist = "(";
while ($server = $db->fetch_row($resultServers))
{
$serverlist .= $server[0].',';
}
$serverlist = preg_replace('/,$/', ')',$serverlist);
foreach ($srvtables as $srvt)
{
echo "<li>$srvt ... ";
$db->query("DELETE FROM $srvt WHERE serverId IN $serverlist");
echo "OK</li>\n";
}
echo "<li>hlstats_server_load ... ";
$db->query("DELETE FROM hlstats_server_load WHERE server_id IN $serverlist");
echo "OK</li>\n";
}
$resultPlayers = $db->query("SELECT playerId FROM hlstats_Players WHERE game = '$game'");
if ($db->num_rows($resultPlayers) > 0)
{
$playerlist = "(";
while ($player = $db->fetch_row($resultPlayers))
{
$playerlist .= $player[0].',';
}
$playerlist = preg_replace('/,$/', ')',$playerlist);
foreach ($pltables as $plt)
{
echo "<li>$plt ... ";
$db->query("DELETE FROM $plt WHERE playerId IN $playerlist");
echo "OK</li>\n";
}
}
foreach ($dbtables as $dbt)
{
echo "<li>$dbt ... ";
echo removeGameSettings($dbt, $game);
}
echo "<li>hlstats_Games ...";
$db->query("DELETE FROM hlstats_Games WHERE code='$game'");
echo "OK\n";
echo "</ul><p>\n";
echo "Done.<p>";
}
function removeGameSettings($table, $game) {
global $db;
$db->query("SELECT COUNT(game) AS cnt FROM $table WHERE game='$game';");
$r = $db->fetch_array();
if ($r['cnt'] == 0)
{
$ret = "No data existent for selected gametype.";
}
else
{
$ret = $r['cnt']." entries deleted!";
$SQL = "DELETE FROM $table WHERE game='$game';";
$db->query($SQL);
}
return $ret."\n";
}
$edlist = new EditList("code", "hlstats_Games", "game", false, false, "", 'delete_game');
$edlist->columns[] = new EditListColumn("code", "Game Code", 10, true, "readonly", "", 16);
$edlist->columns[] = new EditListColumn("name", "Display Name", 30, true, "text", "", 128);
$edlist->columns[] = new EditListColumn("realgame", "Game", 50, true, "select", "hlstats_Games_Supported.name/code/", 128);
$edlist->columns[] = new EditListColumn("hidden", "<center>Hide Game</center>", 0, false, "checkbox");
if ($_POST)
{
if ($edlist->update())
message("success", "Operation successful.");
else
message("warning", $edlist->error());
}
?>
Enter the codes and full names for all the games you want to collect statistics for. (Game codes should be the same as the mod folder name, e.g. "valve".)<br /><br />
After creating a game, you will be able to configure servers, awards, etc. for that game under Game Settings.<br /><br />
<strong>NOTE</strong>: Be cautious of deleting a game. Deleting a game will remove all related settings, including servers, players, and events for that game (and may take a while). You will have to manually remove any images yourself. IF YOU DELETE THE LAST GAME OF A TYPE, THERE IS NO EASY WAY TO MAKE A NEW GAME OF THAT TYPE. If you want to delete and that is the case, you are probably better off deleting all servers for that game and then just hiding the game.<br /><br />
<?php
$result = $db->query("
SELECT
code,
name,
realgame,
hidden
FROM
hlstats_Games
ORDER BY
code ASC
");
$edlist->draw($result, false);
?>
<table style="width:75%;border:0;" cellspacing="0" cellpadding="0">
<tr>
<td align="center"><input type="submit" value=" Apply " class="submit"></td>
</tr>
</table>