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/import.php | 920 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 920 insertions(+) create mode 100755 html/import.php (limited to 'html/import.php') diff --git a/html/import.php b/html/import.php new file mode 100755 index 0000000..250e841 --- /dev/null +++ b/html/import.php @@ -0,0 +1,920 @@ +"); +} + +?> + + + Importing Latest Log Files + '; +} + + +IF (empty($import_adminkey)) { + if ($html) echo'Error:'; + echo "\$import_adminkey not set in config.php!\n"; + if ($html) { + echo ''; + include("includes/footer.php"); + } + return; +} + +IF (!empty($adminkey) and $adminkey != $import_adminkey) { + if ($html) echo'Error:'; + echo "Keys do not match\n"; + $adminkey = ''; + if (!$html) return; +} + +IF (empty($adminkey)) { + if (!$html) die('Please provide the adminkey' ."\n"); + echo' + Enter Admin key: +
+ + + Remember the key +
+ '; + include("includes/footer.php"); + return; +} + + +IF (!@is_dir('logs')) { + if ($html) echo'Error:'; + echo "Can't find the logs directory!\n"; + if ($html) echo "
"; + echo "Current working directory is: ". getcwd() ."\n"; + if ($html) echo "
"; + if (!$html) echo "You forgot to cd to my home directory? Take a look at \$import_homedir in config.php.\n"; + if ($html) { + echo ''; + include("includes/footer.php"); + } + return; +} + + + +if ($html) echo'
'; +echo "\n"; + +$start_time = time(); +$files = isset($_REQUEST['files']) ? $_REQUEST['files'] : 0; +$elapsed = isset($_REQUEST['elapsed']) ? $_REQUEST['elapsed'] : 0; + +if ($ftp_use and !isset($_GET['no_ftp'])) { + DeBugMessage("Use ftp: yes\n\$ftp_use: " . gettype($ftp_use) . ":". var_export($ftp_use, true)); + require("includes/ftp.php"); + $elapsed = $elapsed - (time() - $start_time); +} +else { + ob_flush(); + DeBugMessage("Use ftp: no\n\$ftp_use: " . gettype($ftp_use) . ":". var_export($ftp_use, true)); +} + + +$logdir = opendir('logs'); + +DeBugMessage("Open logdir and read logs"); + +while (false !== ($filename = readdir($logdir))) +{ +// Our (self set) timelimit exceeded => reload the page to prevent srcipt abort + if (!empty($import_reload_after) and $start_time + $import_reload_after <= time()) { + if (!$html) die('Time limit exceeded - unable to reload page (no HTML output)' ."\n"); + + $elapsed = $elapsed + time() - $start_time; + $target = $PHP_SELF ."?key=". urlencode($adminkey) ."&".str_rand()."=".str_rand()."&no_ftp=1&debug=$debug&files=$files&elapsed=$elapsed"; + echo ''; + + echo'
+ + + +
Maximum execution time exeeded; restarting ...
'; + + include("includes/footer.php"); + return; + } + + $oldfilename = $filename; + $filename = 'logs/' . $filename; + $backupfilename = 'logs/backup/' . $oldfilename; + + // UTDC log: Move to logs/utdc/ + if ($import_utdc_download_enable + and substr($filename, strlen($filename) - strlen($import_utdc_log_extension)) == $import_utdc_log_extension + and substr($oldfilename, 0, strlen($import_utdc_log_start)) == $import_utdc_log_start) { + if ($import_utdc_log_compress == 'no') $import_utdc_log_compress = 'yes'; + if ($html) { + echo' + + + + +
UTDC log: '.$oldfilename.'
'; + } else { + echo "UTDC log: $oldfilename:\n"; + } + echo 'Moving to logs/utdc/: '; + if ($html) echo ''; + echo backup_logfile($import_utdc_log_compress, $filename, 'logs/utdc/'.$oldfilename, true) . "\n"; + if ($html) echo '

'; + echo "\n\n"; + unlink($filename); + continue; + } + + // UTDC shot: Move to logs/utdc/ + if ($import_utdc_download_enable + and substr($filename, strlen($filename) - strlen($import_utdc_screenshot_extension)) == $import_utdc_screenshot_extension + and substr($oldfilename, 0, strlen($import_utdc_screenshot_start)) == $import_utdc_screenshot_start) { + if ($import_utdc_log_compress == 'no') $import_utdc_log_compress = 'yes'; + if ($html) { + echo' + + + + +
UTDC log: '.$oldfilename.'
'; + } else { + echo "UTDC log: $oldfilename:\n"; + } + echo 'Moving to logs/utdc/: '; + if ($html) echo ''; + echo backup_logfile("none", $filename, 'logs/utdc/'.$oldfilename, true) . "\n"; + if ($html) echo '

'; + echo "\n\n"; + unlink($filename); + continue; + } + + // ACE log: Move to logs/ace/ + if ($import_ace_download_enable + and substr($filename, strlen($filename) - strlen($import_ace_log_extension)) == $import_ace_log_extension + and substr($oldfilename, 0, strlen($import_ace_log_start)) == $import_ace_log_start) { + if ($import_ace_log_compress == 'no') $import_ace_log_compress = 'yes'; + if ($html) { + echo' + + + + +
ACE log: '.$oldfilename.'
'; + } else { + echo "ACE log: $oldfilename:\n"; + } + echo 'Moving to logs/ace/: '; + if ($html) echo ''; + echo backup_logfile($import_ace_log_compress, $filename, 'logs/ace/'.$oldfilename, true) . "\n"; + if ($html) echo '

'; + echo "\n\n"; + unlink($filename); + continue; + } + + if ($import_ace_download_enable + and substr($filename, strlen($filename) - strlen($import_ace_screenshot_extension)) == $import_ace_screenshot_extension + and substr($oldfilename, 0, strlen($import_ace_screenshot_start)) == $import_ace_screenshot_start) { + if ($html) { + echo' + + + + +
ACE Screenshot: '.$oldfilename.'
'; + } else { + echo "ACE screenshot: $oldfilename:\n"; + } + echo 'Moving to logs/ace/: '; + if ($html) echo ''; + echo backup_logfile("none", $filename, 'logs/ace/'.$oldfilename, false) . "\n"; + if ($html) echo '

'; + echo "\n\n"; + unlink($filename); + continue; + } + + + + // AnthChecker log: Move to logs/ac/ + if ($import_ac_download_enable + and substr($filename, strlen($filename) - strlen($import_ac_log_extension)) == $import_ac_log_extension + and substr($oldfilename, 0, strlen($import_ac_log_start)) == $import_ac_log_start) { + if ($import_ac_log_compress == 'no') $import_ac_log_compress = 'yes'; + if ($html) { + echo' + + + + +
AC log: '.$oldfilename.'
'; + } else { + echo "AC log: $oldfilename:\n"; + } + echo 'Moving to logs/ac/: '; + if ($html) echo ''; + echo backup_logfile($import_ac_log_compress, $filename, 'logs/ac/'.$oldfilename, true) . "\n"; + if ($html) echo '

'; + echo "\n\n"; + unlink($filename); + continue; + } + + if(substr($filename, strlen($filename) - strlen($import_log_extension)) != $import_log_extension) continue; + if(substr($oldfilename, 0, strlen($import_log_start)) != $import_log_start) continue; + + // Create a unique ID + $uid = str_rand(); + + // Check if there are any logs to do ... + + // Create our temp Table + + for (;;) { + $sql = "CREATE ". ($import_use_temporary_tables ? 'TEMPORARY ' : '') ."TABLE `uts_temp_$uid` ( + `id` mediumint(5) NOT NULL, + `col0` char(20) NOT NULL default '', + `col1` char(120) NOT NULL default '', + `col2` char(120) NOT NULL default '', + `col3` char(120) NOT NULL default '', + `col4` char(120) NOT NULL default '', + KEY `part1` (`col1` (20),`col2` (20)), + KEY `part2` (`col0` (20),`col1` (20),`col2` (20)), + KEY `full` (`col0` (20),`col1` (20),`col2` (20),`col3` (20),`col4` (20)) + ) TYPE=". ($import_use_heap_tables ? 'HEAP' : 'MyISAM') .";"; + + $result = mysql_query($sql); + if ($result) break; + + if (mysql_errno() == 1044 and $import_use_temporary_tables) { + echo "
WARNING: Unable to create temporary table (". mysql_error() .")
"; + echo "I'll retry without using MySQL's temporary table feature (see \$import_use_temporary_tables in config.php for details).

"; + $import_use_temporary_tables = false; + continue; + } + die("
Unable to create the temporary table - are you allowed to create tables in this database?

"); + } + $id = 0; + + if ($html) { + echo' + + + + + '; + + // Create sql for NGLog + $row = 1; + $handle = fopen("$filename", "r"); + + while (($data = my_fgets($handle, 5000)) !== FALSE) { + if ($debug) debug_output('Raw input ', $data); + $data = preg_replace('/[\x00]/', '', $data); + if ($debug) debug_output('After preg_replace', $data); + $data = explode("\t", $data); + + $num = count($data); + $row++; + for ($c=0; $c < 1; $c++) { + + $col0 = addslashes($data[0]); + $col1 = addslashes($data[1]); + $col2 = addslashes($data[2]); + $col3 = addslashes($data[3]); + $col4 = addslashes($data[4]); + + $col0 = trim($col0, " \n\r"); + $col1 = trim($col1, " \n\r"); + $col2 = trim($col2, " \n\r"); + $col3 = trim($col3, " \n\r"); + $col4 = trim($col4, " \n\r"); + + $id++; + mysql_query("INSERT INTO uts_temp_$uid VALUES ($id, '$col0', '$col1', '$col2', '$col3', '$col4');") or die(mysql_error()); + } + } + fclose($handle); + $files++; + + if ($html) echo''; + } elseIF (($qm_playercount < 2) || (($qm_gamename == "Bunny Track") and ($qm_playercount < 1))) { + echo "No (Not Enough Players)\n"; + if ($html) echo ''; + } elseIF ($log_incompatible) { + echo "No (Logfile incompatible [created by UTStats $actor_version])\n"; + if ($html) echo ''; + } elseIF ($import_ignore_if_gametime_less_than != 0 and ceil(($qm_gameend[col0] - $qm_gamestart[col0]) / 60) < $import_ignore_if_gametime_less_than) { + echo "No (game too short [". ceil(($qm_gameend[col0] - $qm_gamestart[col0]) / 60) ." < $import_ignore_if_gametime_less_than minutes])\n"; + if ($html) echo ''; + } else { + + $sql_mutators = "SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'GoodMutator'"; + $q_mutators = mysql_query($sql_mutators); + while ($r_mutators = mysql_fetch_array($q_mutators)) { + $qm_mutators .= "".$r_mutators[col3].", "; + } + + + $qm_serveran = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'info' AND col2 = 'Server_AdminName'"); + $qm_serverae = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'info' AND col2 = 'Server_AdminEmail'"); + $qm_serverm1 = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'info' AND col2 = 'Server_MOTDLine1'"); + $qm_serverm2 = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'info' AND col2 = 'Server_MOTDLine2'"); + $qm_serverm3 = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'info' AND col2 = 'Server_MOTDLine3'"); + $qm_serverm4 = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'info' AND col2 = 'Server_MOTDLine4'"); + + $qm_gameinfotl = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'TimeLimit'"); + $qm_gameinfofl = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'FragLimit'"); + $qm_gameinfogt = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'GoalTeamScore'"); + $qm_gameinfomp = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'MaxPlayers'"); + $qm_gameinfoms = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'MaxSpectators'"); + $qm_gameinfogs = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'GameSpeed'"); + $qm_gameinfout = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'UseTranslocator'"); + $qm_gameinfoff = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'FriendlyFireScale'"); + $qm_gameinfows = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'WeaponsStay'"); + + $gametime = $qm_time[col3]; + $servername = addslashes($qm_servername[col3]); + $serverip = $qm_serverip[col3]; + $serverport = $qm_serverport[col3]; + $gamename = addslashes($qm_gamename[col3]); + $servergametime = get_dp($qm_gameend[col0] - $qm_gamestart[col0]); + $gamestart = $qm_gamestart[col0]; + $gameend = $qm_gameend[col0]; + + + $tournament = $qm_tournament[col3]; + $teamgame = $qm_teamgame[col3]; + $mapname = addslashes($qm_mapname[col3]); + $mapfile = addslashes($qm_mapfile[col3]); + + // Lazy Hack for unknown gametypes + $unknowngt = substr("$mapfile", 0, 3); // Gets first 3 characters + + IF ($unknowngt == "JB-") { + $gamename = "JailBreak"; + $teamgame = 'True'; + } + + // Append insta to game if it was an insta game + IF (($qm_insta[col3] == "True") && ($gamename != "Bunny Track")) { $gameinsta = 1; $gamename = "$gamename (insta)"; } else { $gameinsta = 0; } + + // Get the unique ID of this gametype. + // Create a new one if it has none yet. + $r_gid = small_query("SELECT id FROM uts_games WHERE gamename = '$gamename'"); + if ($r_gid) { + $gid = $r_gid['id']; + } else { + mysql_query("INSERT INTO uts_games SET gamename = '$gamename', name = '$gamename'") or die(mysql_error()); + $gid = mysql_insert_id(); + } + + + // Check wheter we want to override the gametype for this match + // (Useful if we want a server to have separate stats for one server or if we want to + // combine DM and TDM rankings or ...) + + // Read all rules + if (!isset($overriderules)) { + $overriderules = array(); + $sql_overriderules = "SELECT id, serverip, gamename, mutator, gid FROM uts_gamestype ORDER BY id ASC;"; + $q_overriderules = mysql_query($sql_overriderules); + while ($r_overriderules = mysql_fetch_array($q_overriderules)) { + $overriderules[$r_overriderules['id']]['serverip'] = $r_overriderules['serverip']; + $overriderules[$r_overriderules['id']]['gamename'] = $r_overriderules['gamename']; + $overriderules[$r_overriderules['id']]['mutator'] = $r_overriderules['mutator']; + $overriderules[$r_overriderules['id']]['gid'] = $r_overriderules['gid']; + } + } + + // Check if one of our overriderules applies to this match + foreach($overriderules as $rule) { + if ($rule['serverip'] != '*' and $rule['serverip'] != "$serverip:$serverport") continue; + if ($rule['gamename'] != '*' and $rule['gamename'] != $gamename) continue; + if ($rule['mutator'] != '*' and stristr($qm_mutators, $rule['mutator']) === false) continue; + $gid = $rule['gid']; + break; + } + + + $qm_firstblood = small_query("SELECT col2 FROM uts_temp_$uid WHERE col1 = 'first_blood'"); + + $firstblood = addslashes($qm_firstblood[col2]); + + + $serverinfo = addslashes("Admin: $qm_serveran[col3]
Email: $qm_serverae[col3]

+ MOTD
$qm_serverm1[col3]
$qm_serverm2[col3]
$qm_serverm3[col3]
$qm_serverm4[col3]"); + + + $gameinfo = addslashes( add_info('Time Limit:', $qm_gameinfotl[col3]) . + add_info('Frag Limit:', $qm_gameinfofl[col3]) . + add_info('Goal Team Score:', $qm_gameinfogt[col3]) . + add_info('Max Players:', $qm_gameinfomp[col3]) . + add_info('Max Specs:', $qm_gameinfoms[col3]) . + add_info('Game Speed:', $qm_gameinfogs[col3]) . + add_info('Translocator:', $qm_gameinfout[col3]) . + add_info('Friendly Fire:', $qm_gameinfoff[col3]) . + add_info('Weapon Stay:', $qm_gameinfows[col3]) . + add_info('UTStats Actor Version:', $actor_version)); + + // Tidy Up The Info + + $mutators = substr("$qm_mutators", 0, -2); // remove trailing , + $mutators = un_ut($mutators); // Remove Class and BotPack. etc + $mutators = addslashes($mutators); + + $gametime = utdate($gametime); + + + // Get Teams Info + $sql_tinfo = "SELECT col4 FROM uts_temp_$uid WHERE col1 = 'player' AND col2 = 'TeamName' GROUP BY col4 ORDER BY col4 ASC"; + $q_tinfo = mysql_query($sql_tinfo) or die(mysql_error()); + + $t0info = 0; + $t1info = 0; + $t2info = 0; + $t3info = 0; + + while ($r_tinfo = mysql_fetch_array($q_tinfo)) { + IF ($r_tinfo[col4] == "Red") { $t0info = 1; } + IF ($r_tinfo[col4] == "Blue") { $t1info = 1; } + IF ($r_tinfo[col4] == "Green") { $t2info = 1; } + IF ($r_tinfo[col4] == "Gold") { $t3info = 1; } + } + + // Get Teamscores + $sql_tscore = "SELECT col2 AS team, col3 AS score FROM uts_temp_$uid WHERE col1 = 'teamscore'"; + $q_tscore = mysql_query($sql_tscore) or die(mysql_error()); + + $t0score = 0; + $t1score = 0; + $t2score = 0; + $t3score = 0; + + while ($r_tscore = mysql_fetch_array($q_tscore)) { + if ($r_tscore['team'] == "0") $t0score = $r_tscore['score']; + if ($r_tscore['team'] == "1") $t1score = $r_tscore['score']; + if ($r_tscore['team'] == "2") $t2score = $r_tscore['score']; + if ($r_tscore['team'] == "3") $t3score = $r_tscore['score']; + } + + +// Insert Server Info Into Database +$sql_serverinfo = "INSERT INTO uts_match (time, servername, serverip, gamename, gid, gametime, mutators, insta, tournament, teamgame, mapname, mapfile, serverinfo, gameinfo, frags, kills, suicides, teamkills, deaths, +t0, t1, t2, t3, t0score, t1score, t2score, t3score) +VALUES ('$gametime', '$servername', '$serverip:$serverport', '$gamename', '$gid', '$servergametime', '$mutators', '$gameinsta', '$tournament', +'$teamgame', '$mapname', '$mapfile', '$serverinfo', '$gameinfo', '$s_frags', '$s_kills', '$s_suicides', '$s_teamkills', '$s_deaths', +$t0info, $t1info, $t2info, $t3info, $t0score, $t1score, $t2score, $t3score);"; + + $q_serverinfo = mysql_query($sql_serverinfo) or die(mysql_error()); + $matchid = mysql_insert_id(); // Get our Match ID + + + + echo "Yes (ID: $matchid)\n"; + if ($html) echo ''; + + // Process Player Stuff + $playerid2pid = array(); + $ignored_players = array(); + $imported_players = array(); + + if ($html) echo ''; + // Check if theres any players left, if none or one delete the match (its possible ...) + $final_pcount = small_count("SELECT id FROM uts_player WHERE matchid = $matchid"); + + IF ($final_pcount == NULL || ($final_pcount == 1 && $gamename != "Bunny Track")) { + echo' + + + '; + + $sql_radjust = "SELECT pid, gid, rank FROM uts_player WHERE matchid = $matchid"; + $q_radjust = mysql_query($sql_radjust) or die(mysql_error()); + while ($r_radjust = mysql_fetch_array($q_radjust)) { + $pid = $r_radjust[pid]; + $gid = $r_radjust[gid]; + $rank = $r_radjust[rank]; + + $sql_crank = small_query("SELECT id, rank, matches FROM uts_rank WHERE pid = $pid AND gid = $gid"); + if (!$sql_crank) continue; + + $rid = $sql_crank[id]; + $newrank = $sql_crank[rank]-$rank; + $oldrank = $sql_crank[rank]; + $matchcount = $sql_crank[matches]-1; + + mysql_query("UPDATE uts_rank SET rank = $newrank, prevrank = $oldrank, matches = $matchcount WHERE id = $rid") or die(mysql_error()); + } + mysql_query("DELETE FROM uts_rank WHERE matches = 0") or die(mysql_error()); + + $rem_mrecord = "DELETE FROM uts_match WHERE id = $matchid"; + mysql_query($rem_mrecord); + $rem_precord = "DELETE FROM uts_player WHERE matchid = $matchid"; + mysql_query($rem_precord); + $rem_precord = "DELETE FROM uts_events WHERE matchid = $matchid"; + mysql_query($rem_precord); + } else { + // Make our weapons statistics + echo "\n"; + if ($html) echo ''; + + // Make our kills matrix stuff ... + if ($html) echo ''; + + + $updategameinfo = false; + if (count($ignored_players) > 0) { + // Maybe we imported the player and ignored another record of him? + $ignored_players = array_unique($ignored_players); + foreach($ignored_players as $t_id => $t_name) { + if (in_array($t_name, $imported_players)) unset($ignored_players[$t_id]); + } + if (count($ignored_players) > 0) { + $gameinfo .= addslashes(add_info('Ignored Players:', implode(', ', $ignored_players))); + $updategameinfo = true; + } + } + if ($updategameinfo) { + mysql_query("UPDATE uts_match SET gameinfo = '$gameinfo' WHERE id = '$matchid'"); + $updategameinfo = false; + } + } + } + + // Delete Temp MySQL Table + $droptable = "DROP TABLE uts_temp_$uid"; + mysql_query($droptable) or die(mysql_error()); + + if ($html) echo'
Importing '.$oldfilename.'
'; + } else { + echo "Importing $oldfilename:\n"; + } + echo 'Creating Temp MySQL Table: '; + if ($html) echo ''; + echo "uts_temp_$uid\n"; + if ($html) echo '
'; + echo 'Backing Up Log File: '; + if ($html) echo ''; + + // Copy the file to backup folder first + echo backup_logfile($import_log_backup, $filename, $backupfilename, true) . "\n"; + + if ($html) echo '
'; + echo 'Player Data Moved to Temp MySQL: '; + if ($html) echo ''; + echo "Yes\n"; + + + + $log_incompatible = false; + $actor_version = 'unknown'; + $qm_logtype = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'info' AND col2 = 'Log_Standard'"); + if ($qm_logtype['col3'] == 'UTStats') { + $qm_logversion = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'info' AND col2 = 'Log_Version'"); + $actor_version = $qm_logversion['col3']; + } + + if (!in_array($actor_version, $compatible_actor_versions)) { + if ($import_incompatible_logs) { + if ($html) echo '
'; + echo "WARNING: "; + if ($html) echo ''; + echo "This logfile was created using an incompatible UTStats server actor version ($actor_version). You may experience strange results and/or bugs!\n"; + } else { + $log_incompatible = true; + } + } + + + if ($html) echo '
'; + echo "Match Data Created: "; + if ($html) echo ''; + + // Get the match table info + $qm_time = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'info' AND col2 = 'Absolute_Time'"); + $qm_servername = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'info' AND col2 = 'Server_ServerName'"); + $qm_serverip = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'info' AND col2 = 'True_Server_IP'"); + $qm_serverport = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'info' AND col2 = 'Server_Port'"); + $qm_gamename = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'GameName'"); + + $qm_gamestart = small_query("SELECT col0 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'realstart'"); + $qm_gameend = small_query("SELECT col0 FROM uts_temp_$uid WHERE col1 = 'game_end'"); + + $qm_insta = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'insta'"); + $qm_tournament = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'TournamentMode'"); + $qm_teamgame = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'game' AND col2 = 'TeamGame'"); + $qm_mapname = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'map' AND col2 = 'Title'"); + $qm_mapfile = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'map' AND col2 = 'Name'"); + $qm_frags = small_query("SELECT SUM(col4) AS frags FROM uts_temp_$uid WHERE col1 = 'stat_player' AND col2 = 'frags'"); + $qm_kills = small_query("SELECT SUM(col4) AS kills FROM uts_temp_$uid WHERE col1 = 'stat_player' AND col2 = 'kills'"); + $qm_suicides = small_query("SELECT SUM(col4) AS suicides FROM uts_temp_$uid WHERE col1 = 'stat_player' AND col2 = 'suicides'"); + $qm_deaths = small_query("SELECT SUM(col4) AS deaths FROM uts_temp_$uid WHERE col1 = 'stat_player' AND col2 = 'deaths'"); + $qm_teamkills = small_query("SELECT SUM(col4) AS teamkills FROM uts_temp_$uid WHERE col1 = 'stat_player' AND col2 = 'teamkills'"); + + $qm_playercount = small_count("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'player' AND col2 = 'rename' GROUP BY col3"); + + $s_frags = $qm_frags[frags]; + $s_suicides = $qm_suicides[suicides]; + $s_deaths = $qm_deaths[deaths]; + + // Add teamkills only if its a team game, else add them to kills total + IF ($qm_teamgame[col3] == "True") { + $s_kills = $qm_kills[kills]; + $s_teamkills = $qm_teamkills[teamkills]; + } else { + $s_kills = $qm_kills[kills]+$qm_teamkills[teamkills]; + $s_teamkills = 0; + } + + // Change the gamename to bunny track if needed: + if (($qm_gamename[col3] == "BunnyTrack2") || (($qm_gamename[col3] == "Capture the Flag") && (strtolower(substr($qm_mapfile[col3], 0, 7)) == "ctf-bt-"))) { + $qm_gamename[col3] = "Bunny Track"; + } + + // Check if anything happened, if it didnt stop everything now + // + IF (($qm_kills[kills] == 0 && $qm_deaths[deaths] == 0) && ($qm_gamename[col3] != "Bunny Track")) { + echo "No (Empty Match)\n"; + if ($html) echo '
'; + echo "Importing Players: "; + if ($html) echo ''; + + // Get List of Player IDs and Process What They Have Done + $sql_player = "SELECT DISTINCT col4 FROM uts_temp_$uid WHERE col1 = 'player' AND col2 = 'rename' AND col4 <> ''"; + $q_player = mysql_query($sql_player) or die(mysql_error()); + while ($r_player = mysql_fetch_array($q_player)) { + $playerid = $r_player[col4]; + + // Get players last name used + $r_player2 = small_query("SELECT col3 FROM uts_temp_$uid WHERE col1 = 'player' AND col2 = 'rename' AND col4 = $playerid ORDER BY id DESC LIMIT 0,1"); + $playername = addslashes($r_player2[col3]); + + + // Are they a Bot + $r_player1 = small_query("SELECT col4 FROM uts_temp_$uid WHERE col1 = 'player' AND col2 = 'IsABot' AND col3 = $playerid ORDER BY id DESC LIMIT 0,1"); + $playertype = $r_player1[col4]; + // This player is a bot + if ($playertype == 'True' and $import_ignore_bots) { + $ignored_players[] = $playername; + // We do not want to know who killed and who was killed by this bot... + mysql_query("DELETE FROM uts_temp_$uid WHERE (col1 = 'kill' OR col1 = 'teamkill') AND (col2 = '$playerid' OR col4 = '$playerid');") or die(mysql_error()); + if ($html) echo ""; + echo "Bot:$playername "; + if ($html) echo ""; + continue; + } + + // Get players last team + $r_player3 = small_query("SELECT col4 FROM uts_temp_$uid WHERE col1 = 'player' AND col2 = 'TeamChange' AND col3 = $playerid AND col4 != 255 ORDER BY id DESC LIMIT 0,1"); + $playerteam = $r_player3[col4]; + + $qc_kills = small_query("SELECT col4 FROM uts_temp_$uid WHERE col1 = 'stat_player' AND col2 = 'kills'AND col3 = $playerid"); + $qc_teamkills = small_query("SELECT col4 FROM uts_temp_$uid WHERE col1 = 'stat_player' AND col2 = 'teamkills' AND col3 = $playerid"); + $qc_deaths = small_query("SELECT col4 FROM uts_temp_$uid WHERE col1 = 'stat_player' AND col2 = 'deaths' AND col3 = $playerid"); + + // Player had no kills, deaths or teamkills => ignore + IF ($qc_kills[col4] == 0 && $qc_deaths[col4] == 0 && $qc_teamkills[col4] ==0 && $gamename != "Bunny Track") { + $ignored_players[] = $playername; + continue; + } + + // Process all the other player information + include("import/import_playerstuff.php"); + + if ($playerbanned) { + // Banned players don't have a rank. + mysql_query("DELETE FROM uts_rank WHERE pid = '$pid'"); + + if ($import_ban_type == 2) { + // We do not want to know who killed and who was killed by this banned player + $ignored_players[] = $playername; + mysql_query("DELETE FROM uts_temp_$uid WHERE (col1 = 'kill' OR col1 = 'teamkill') AND (col2 = '$playerid' OR col4 = '$playerid');") or die(mysql_error()); + if ($html) echo ""; + echo "Banned:$playername "; + if ($html) echo ""; + continue; + } + } + + // Get Gametype specific stuff done + IF ($gamename == "Assault" || $gamename == "Assault (insta)") { include("import/import_ass.php"); } + IF ($gamename == "Capture the Flag" || $gamename == "Capture the Flag (insta)") { include("import/import_ctf.php"); } + IF ($gamename == "Bunny Track") { include("import/import_bt.php"); } + IF ($gamename == "Domination" || $gamename == "Domination (insta)") { include("import/import_dom.php"); } + IF ($gamename == "Tournament Team Game" || $gamename == "Tournament Team Game (insta)") { include("import/import_tdm.php"); } + IF ($gamename == "JailBreak" || $gamename == "JailBreak (insta)") { include("import/import_jailbreak.php"); } + IF ($gamename == "Last Man Standing" || $gamename == "Last Man Standing (insta)") { include("import/import_lms.php"); } + IF ($gamename == "Extended Last Man Standing" || $gamename == "Extended Last Man Standing (insta)") { include("import/import_lms.php"); } + IF ($gamename == "Last Man Standing +" || $gamename == "Last Man Standing + (insta)") { include("import/import_lms.php"); } + IF ($gamename == "Last Man Standing++" || $gamename == "Last Man Standing++ (insta)") { include("import/import_lms.php"); } + + // Do the rankings + include("import/import_ranking.php"); + + if ($playerbanned) { + if ($html) echo ""; + echo "Banned:"; + } + echo $playername.' '; + if ($playerbanned and $html) echo ""; + if ($html) echo "
"; + $imported_players[] = $playername; + } + if ($html) echo '
Deleting Match:0 or 1 Player Entries Left
'; + echo "Importing weapon statistics: "; + if ($html) echo ''; + include("import/import_weapons.php"); + echo "Done\n"; + if ($html) echo '
'; + echo "Building kills matrix: "; + if ($html) echo ''; + include("import/import_killsmatrix.php"); + echo "Done\n"; + + + if ($html) echo '
'; + echo "Combining Duplicate Player Entries: "; + if ($html) echo ''; + + // Combine duplicate player entries ... very intensive :( + include("import/import_pcleanup.php"); + + echo "Done\n"; + if ($html) echo'
'; + echo "Deleting Temp MySQL Table: "; + if ($html) echo ''; + echo "uts_temp_$uid\n"; + if ($html) echo '

'; + echo "\n\n"; + + // Clear variables + + $asscode = ""; + $assteam = ""; + $asswin = ""; + $avgping = ""; + $data = ""; + $domplayer = ""; + $droptable = ""; + $firstblood = ""; + $gameinfo = ""; + $gameinsta = ""; + $gamename = ""; + $gametime = ""; + $highping = ""; + $unknowngt = ""; + $lowping = ""; + $mapname = ""; + $mapfile = ""; + $matchid = ""; + $mutators = ""; + $num = ""; + $playerid = ""; + $playerfragscnt = ""; + $playername = ""; + $playerecordid = ""; + $playerteam = ""; + $qm_mutators = ""; + $row = 1; + $servername = ""; + $serverinfo = ""; + $serverip = ""; + $serverport = ""; + $suicidecnt = ""; + $t0info = ""; + $t1info = ""; + $t2info = ""; + $t3info = ""; + $t0score = ""; + $t1score = ""; + $t2score = ""; + $t3score = ""; + $teamgame = ""; + $tournament = ""; + +// Delete log file + unlink($filename); +} +closedir($logdir); + +if ($html) echo '
'; +echo "\n"; + +// Import stats +if ($files != 0) { + $elapsed = $elapsed + time() - $start_time; + if ($html) echo '

'; + echo "Processed $files ". ($files == 1 ? 'file' : 'files') ." in $elapsed ". ($elapsed == 1 ? 'second' : 'seconds') ." "; + echo "(". get_dp($elapsed / $files) ." seconds/file)\n"; + if ($html) echo '


'; +} + + +// Optimise database +if (rand(0, 5) == 0) { + if ($html) echo '

'; + echo "Optimizing tables... "; + mysql_query("OPTIMIZE TABLE uts_match, uts_player, uts_rank, uts_killsmatrix, uts_weaponstats, uts_pinfo;") or die(mysql_error()); + echo "Done\n"; + if ($html) echo '

'; +} + +// Analyze Key distribution +if (rand(0, 10) == 0) { + if ($html) echo '

'; + echo "Analyzing tables... "; + mysql_query("ANALYZE TABLE uts_match, uts_player, uts_rank, uts_killsmatrix, uts_weaponstats, uts_pinfo;") or die(mysql_error()); + echo "Done\n"; + if ($html) echo '

'; +} + + +// Purge old logs +if ($purged = (purge_backups('logs/backup', $import_log_backups_purge_after))) { + if ($html) echo '

'; + echo "Purged $purged old logfiles\n"; + if ($html) echo '

'; +} + +// Purge old utdc logs +if ($import_utdc_download_enable) { + if ($purged = (purge_backups('logs/utdc', $import_utdc_log_purge_after))) { + if ($html) echo '

'; + echo "Purged $purged old UTDC logfiles\n"; + if ($html) echo '

'; + } +} + +// Purge old AnthChecker logs +if ($import_ac_download_enable) { + if ($purged = (purge_backups('logs/ac', $import_ac_log_purge_after))) { + if ($html) echo '

'; + echo "Purged $purged old AC logfiles\n"; + if ($html) echo '

'; + } +} + +// Purge old ACE logs +if ($import_ace_download_enable) { + if ($purged = (purge_backups('logs/ace', $import_ace_log_purge_after))) { + if ($html) echo '

'; + echo "Purged $purged old ACE logfiles\n"; + if ($html) echo '

'; + } +} + +echo "\n\n"; +if ($html) echo '
'; +echo "Import Script Completed\n"; +if ($html) echo '
'; + +if ($html) include("includes/footer.php"); +?> -- cgit