PageRenderTime 49ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 1ms

/html/pages/players_info.php

https://github.com/graywh/utstats
PHP | 403 lines | 350 code | 45 blank | 8 comment | 22 complexity | 960af72f9b13b71c16754de4ce878ec9 MD5 | raw file
  1. <?php
  2. global $pic_enable;
  3. $pid = isset($pid) ? addslashes($pid) : addslashes($_GET['pid']);
  4. $r_info = small_query("SELECT name, country, banned FROM uts_pinfo WHERE id = '$pid'");
  5. if (!$r_info)
  6. {
  7. echo "Player not found";
  8. include("includes/footer.php");
  9. exit;
  10. }
  11. if ($r_info['banned'] == 'Y')
  12. {
  13. if (isset($is_admin) and $is_admin)
  14. {
  15. echo "Warning: Banned player - Admin override<br>";
  16. }
  17. else
  18. {
  19. echo "Sorry, this player has been banned!";
  20. include("includes/footer.php");
  21. exit;
  22. }
  23. }
  24. $playername = $r_info['name'];
  25. if (isset($_GET['togglewatch']))
  26. {
  27. $status = ToggleWatchStatus($pid);
  28. include('includes/header.php');
  29. if ($status == 1)
  30. {
  31. echo htmlentities($playername) ." has been added to your watchlist";
  32. }
  33. else
  34. {
  35. echo htmlentities($playername) ." has been removed from your watchlist";
  36. }
  37. echo "<br>";
  38. $target = $PHP_SELF .'?p=pinfo&amp;pid='. $pid;
  39. echo 'You will be taken back to the <a href="'. $target .'">'. htmlentities($playername) .'\'s page</a> in a moment.';
  40. echo '<meta http-equiv="refresh" content="2;URL='. $target .'">';
  41. return;
  42. }
  43. if (isset($_GET['pics']))
  44. {
  45. $gid = $_GET['gid'];
  46. if (!$pic_enable)
  47. {
  48. echo "Sorry, pictures are disabled by the administrator";
  49. return;
  50. }
  51. $oururl = $_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"];
  52. $oururl = str_replace("index.php", "", $oururl);
  53. echo '<div class="pages" align="left">';
  54. require('includes/config_pic.php');
  55. $disp = false;
  56. foreach($pic as $num => $options)
  57. {
  58. if (!$options['enabled']) continue;
  59. if ($options['gidrequired'] and empty($gid)) continue;
  60. $disp = true;
  61. $pinfourl = "http://$oururl?p=pinfo&pid=$pid";
  62. $lgid = ($options['gidrequired']) ? $gid : 0;
  63. $imgurl = "http://$oururlpic.php/$num/$pid/$lgid/.".$options['output']['type'];
  64. echo '<table class="box" border="0" cellspacing="2" cellpadding="1" align="center"><tr>';
  65. echo '<td colspan="2" align="center"><img src="'. $imgurl .'" border="0" /></td>';
  66. echo '</tr><tr>';
  67. echo '<td class="smheading">BB Code:</td><td><textarea rows="1" cols="85">'. str_replace(' ', '&nbsp;', htmlentities('[url='.$pinfourl.'][img]'.$imgurl.'[/img][/url]')) .'</textarea></td>';
  68. echo '</tr><tr>';
  69. echo '<td class="smheading">HTML Code:</td><td><textarea rows="1" cols="85">'. str_replace(' ', '&nbsp;', htmlentities('<a href="'.$pinfourl.'" target="_blank"><img src="'.$imgurl.'" border="0"></img></a>')) .'</textarea></td>';
  70. echo '</tr></table><br><br>';
  71. }
  72. if (!$disp) echo "Sorry, no pictures in this category";
  73. echo '</div>';
  74. return;
  75. }
  76. echo'
  77. <table class="box" border="0" cellpadding="1" cellspacing="2" width="710">
  78. <tbody><tr>
  79. <td class="heading" colspan="13" align="center">Career Summary for '.FlagImage($r_info['country'], false).' '.htmlentities($playername).' ';
  80. if (PlayerOnWatchlist($pid))
  81. {
  82. echo '<a href="?p=pinfo&amp;pid='.$pid.'&amp;togglewatch=1&amp;noheader=1"><img src="images/unwatch.png" width="17" height="11" border="0" alt="" title="You are watching this player. Click to remove from your watchlist."></a>';
  83. }
  84. else
  85. {
  86. echo '<a href="?p=pinfo&amp;pid='.$pid.'&amp;togglewatch=1&amp;noheader=1"><img src="images/watch.png" width="17" height="11" border="0" alt="" title="Click to add this player to your watchlist."></a>';
  87. }
  88. echo '
  89. </td>
  90. </tr>
  91. <tr>
  92. <td class="smheading" align="center">Match Type</td>
  93. <td class="smheading" align="center">Score</td>
  94. <td class="smheading" align="center" '.OverlibPrintHint('F').'>F</td>
  95. <td class="smheading" align="center" '.OverlibPrintHint('K').'>K</td>
  96. <td class="smheading" align="center" '.OverlibPrintHint('D').'>D</td>
  97. <td class="smheading" align="center" '.OverlibPrintHint('S').'>S</td>
  98. <td class="smheading" align="center" '.OverlibPrintHint('TK').'>TK</td>
  99. <td class="smheading" align="center" '.OverlibPrintHint('EFF').'>Eff.</td>
  100. <td class="smheading" align="center" '.OverlibPrintHint('FPH').'>FPH</td>
  101. <td class="smheading" align="center" '.OverlibPrintHint('ACC').'>Acc.</td>
  102. <td class="smheading" align="center" '.OverlibPrintHint('TTL').'>Avg TTL</td>
  103. <td class="smheading" align="center">Matches</td>
  104. <td class="smheading" align="center">Hours</td>
  105. </tr>';
  106. $sql_plist = "SELECT g.name AS gamename, SUM(p.gamescore) AS gamescore, SUM(p.frags) AS frags, SUM(p.kills) AS kills, SUM(p.deaths) AS deaths,
  107. SUM(p.suicides) AS suicides, SUM(p.teamkills) AS teamkills, SUM(p.kills+p.deaths+p.suicides+p.teamkills) AS sumeff, LEAST(ROUND(10000 * SUM(ws.hits)/SUM(ws.shots))/100,100) AS accuracy, COUNT(p.id) AS games, SUM(p.gametime) as gametime
  108. FROM uts_player AS p, uts_games AS g, uts_weaponstats as ws
  109. WHERE p.gid = g.id AND p.pid = '$pid' AND ws.pid = '$pid' and ws.weapon = '0' AND ws.matchid = p.matchid GROUP BY p.gid";
  110. $q_plist = mysql_query($sql_plist) or die(mysql_error());
  111. while ($r_plist = mysql_fetch_array($q_plist))
  112. {
  113. $gametime = sec2hour($r_plist['gametime']);
  114. $eff = get_dp($r_plist['kills'] / $r_plist['sumeff'] * 100);
  115. $acc = get_dp($r_plist['accuracy']);
  116. $fph = get_dp($r_plist['frags'] / $r_plist['gametime'] * 3600);
  117. $ttl = GetMinutes($r_plist['gametime'] / ($r_plist['deaths'] + $r_plist['suicides'] + $r_plist['games']));
  118. echo'<tr>
  119. <td class="dark" align="center">'.$r_plist['gamename'].'</td>
  120. <td class="grey" align="center">'.$r_plist['gamescore'].'</td>
  121. <td class="grey" align="center">'.$r_plist['frags'].'</td>
  122. <td class="grey" align="center">'.$r_plist['kills'].'</td>
  123. <td class="grey" align="center">'.$r_plist['deaths'].'</td>
  124. <td class="grey" align="center">'.$r_plist['suicides'].'</td>
  125. <td class="grey" align="center">'.$r_plist['teamkills'].'</td>
  126. <td class="grey" align="center">'.$eff.'</td>
  127. <td class="grey" align="center">'.$fph.'</td>
  128. <td class="grey" align="center">'.$acc.'</td>
  129. <td class="grey" align="center">'.$ttl.'</td>
  130. <td class="grey" align="center">'.$r_plist['games'].'</td>
  131. <td class="grey" align="center">'.$gametime.'</td>
  132. </tr>';
  133. }
  134. $r_sumplist = small_query("SELECT SUM(p.gamescore) AS gamescore, SUM(p.frags) AS frags, SUM(p.kills) AS kills, SUM(p.deaths) AS deaths, SUM(p.suicides) AS suicides, SUM(p.teamkills) AS teamkills, SUM(p.kills+p.deaths+p.suicides+p.teamkills) AS sumeff, COUNT(p.id) AS games, SUM(p.gametime) as gametime, ws.acc as accuracy
  135. FROM uts_player AS p, uts_weaponstats as ws WHERE p.pid = '$pid' AND ws.pid = '$pid' AND ws.matchid = 0 AND ws.weapon = 0 GROUP BY p.pid");
  136. $gametime = sec2hour($r_sumplist['gametime']);
  137. $eff = get_dp($r_sumplist['kills']/$r_sumplist['sumeff']*100);
  138. $acc = get_dp($r_sumplist['accuracy']);
  139. $fph = get_dp($r_sumplist['frags']/$r_sumplist['gametime']*3600);
  140. $ttl = GetMinutes($r_sumplist['gametime'] / ($r_sumplist['deaths'] + $r_sumplist['suicides'] + $r_sumplist['games']));
  141. echo'
  142. <tr>
  143. <td class="dark" align="center"><b>Totals</b></td>
  144. <td class="darkgrey" align="center">'.$r_sumplist['gamescore'].'</td>
  145. <td class="darkgrey" align="center">'.$r_sumplist['frags'].'</td>
  146. <td class="darkgrey" align="center">'.$r_sumplist['kills'].'</td>
  147. <td class="darkgrey" align="center">'.$r_sumplist['deaths'].'</td>
  148. <td class="darkgrey" align="center">'.$r_sumplist['suicides'].'</td>
  149. <td class="darkgrey" align="center">'.$r_sumplist['teamkills'].'</td>
  150. <td class="darkgrey" align="center">'.$eff.'</td>
  151. <td class="darkgrey" align="center">'.$fph.'</td>
  152. <td class="darkgrey" align="center">'.$acc.'</td>
  153. <td class="darkgrey" align="center">'.$ttl.'</td>
  154. <td class="darkgrey" align="center">'.$r_sumplist['games'].'</td>
  155. <td class="darkgrey" align="center">'.$gametime.'</td>
  156. </tr>
  157. </tbody></table>
  158. <br>
  159. <table border="0" cellpadding="1" cellspacing="2" width="600">
  160. <tbody><tr>
  161. <td class="medheading" colspan="11" align="center">Assault, Domination and CTF Events Summary</td>
  162. </tr>
  163. <tr>
  164. <td class="dark" align="center" rowspan="2">Assault Objectives</td>
  165. <td class="dark" align="center" rowspan="2">Control Point Captures</td>
  166. <td class="dark" align="center" colspan="9">Capture The Flag</td>
  167. </tr>
  168. <tr>
  169. <td class="dark" align="center">Flag Takes</td>
  170. <td class="dark" align="center">Flag Pickups</td>
  171. <td class="dark" align="center">Flag Drops</td>
  172. <td class="dark" align="center">Flag Assists</td>
  173. <td class="dark" align="center">Flag Covers</td>
  174. <td class="dark" align="center">Flag Seals</td>
  175. <td class="dark" align="center">Flag Captures</td>
  176. <td class="dark" align="center">Flag Kills</td>
  177. <td class="dark" align="center">Flag Returns</td>
  178. </tr>';
  179. #$q_assgids = mysql_query("SELECT id FROM uts_games WHERE gamename LIKE '%Assault%';") or die(mysql_error());
  180. #$assgids = array();
  181. #while ($r_assgids = mysql_fetch_array($q_assgids)) {
  182. # $assgids[] = $r_assgids['id'];
  183. #}
  184. #$assquery = (count($assgids) > 0) ? 'SUM(IF (gid IN ('. implode(',', $assgids) .'), ass_obj, 0)) AS ass_obj' : '0 AS ass_obj';
  185. $sql_cdatot = zero_out(small_query("SELECT SUM(dom_cp) AS dom_cp, SUM(ass_obj) AS ass_obj, SUM(flag_taken) AS flag_taken,
  186. SUM(flag_pickedup) AS flag_pickedup, SUM(flag_dropped) AS flag_dropped, SUM(flag_assist) AS flag_assist, SUM(flag_cover) AS flag_cover,
  187. SUM(flag_seal) AS flag_seal, SUM(flag_capture) AS flag_capture, SUM(flag_kill)as flag_kill,
  188. SUM(flag_return) AS flag_return FROM uts_player WHERE pid = '$pid'"));
  189. echo'
  190. <tr>
  191. <td class="grey" align="center">'.$sql_cdatot['ass_obj'].'</td>
  192. <td class="grey" align="center">'.$sql_cdatot['dom_cp'].'</td>
  193. <td class="grey" align="center">'.$sql_cdatot['flag_taken'].'</td>
  194. <td class="grey" align="center">'.$sql_cdatot['flag_pickedup'].'</td>
  195. <td class="grey" align="center">'.$sql_cdatot['flag_dropped'].'</td>
  196. <td class="grey" align="center">'.$sql_cdatot['flag_assist'].'</td>
  197. <td class="grey" align="center">'.$sql_cdatot['flag_cover'].'</td>
  198. <td class="grey" align="center">'.$sql_cdatot['flag_seal'].'</td>
  199. <td class="grey" align="center">'.$sql_cdatot['flag_capture'].'</td>
  200. <td class="grey" align="center">'.$sql_cdatot['flag_kill'].'</td>
  201. <td class="grey" align="center">'.$sql_cdatot['flag_return'].'</td>
  202. </tr>
  203. </tbody></table>
  204. <br>
  205. <table border="0" cellpadding="0" cellspacing="2" width="400">
  206. <tbody><tr>
  207. <td class="heading" colspan="11" align="center">Special Events</td>
  208. </tr>
  209. <tr>
  210. <td class="smheading" align="center" rowspan="2" width="40">First Blood</td>
  211. <td class="smheading" align="center" rowspan="2" width="40">Head Shots</td>
  212. <td class="smheading" align="center" colspan="4" width="160" '.OverlibPrintHint('Multis').'>Multis</td>
  213. <td class="smheading" align="center" colspan="5" width="200" '.OverlibPrintHint('Sprees').'>Sprees</td>
  214. </tr>
  215. <tr>
  216. <td class="smheading" align="center" width="40" '.OverlibPrintHint('DK').'>Dbl</td>
  217. <td class="smheading" align="center" width="40" '.OverlibPrintHint('MK').'>Multi</td>
  218. <td class="smheading" align="center" width="40" '.OverlibPrintHint('UK').'>Ultra</td>
  219. <td class="smheading" align="center" width="40" '.OverlibPrintHint('MOK').'>Mons</td>
  220. <td class="smheading" align="center" width="40" '.OverlibPrintHint('KS').'>Kill</td>
  221. <td class="smheading" align="center" width="40" '.OverlibPrintHint('RA').'>Ram</td>
  222. <td class="smheading" align="center" width="40" '.OverlibPrintHint('DO').'>Dom</td>
  223. <td class="smheading" align="center" width="40" '.OverlibPrintHint('US').'>Uns</td>
  224. <td class="smheading" align="center" width="40" '.OverlibPrintHint('GL').'>God</td>
  225. </tr>';
  226. $sql_firstblood = zero_out(small_query("SELECT COUNT(id) AS fbcount FROM uts_match WHERE firstblood = '$pid'"));
  227. $sql_multis = zero_out(small_query("SELECT SUM(spree_double) AS spree_double, SUM(spree_multi) AS spree_multi, SUM(spree_ultra) AS spree_ultra, SUM(spree_monster) AS spree_monster, SUM(spree_kill) AS spree_kill, SUM(spree_rampage) AS spree_rampage, SUM(spree_dom) AS spree_dom,
  228. SUM(spree_uns) AS spree_uns, SUM(spree_god) AS spree_god, SUM(headshots) AS headshots
  229. FROM uts_player WHERE pid = '$pid'"));
  230. echo'
  231. <tr>
  232. <td class="grey" align="center">'.$sql_firstblood['fbcount'].'</td>
  233. <td class="grey" align="center">'.$sql_multis['headshots'].'</td>
  234. <td class="grey" align="center">'.$sql_multis['spree_double'].'</td>
  235. <td class="grey" align="center">'.$sql_multis['spree_multi'].'</td>
  236. <td class="grey" align="center">'.$sql_multis['spree_ultra'].'</td>
  237. <td class="grey" align="center">'.$sql_multis['spree_monster'].'</td>
  238. <td class="grey" align="center">'.$sql_multis['spree_kill'].'</td>
  239. <td class="grey" align="center">'.$sql_multis['spree_rampage'].'</td>
  240. <td class="grey" align="center">'.$sql_multis['spree_dom'].'</td>
  241. <td class="grey" align="center">'.$sql_multis['spree_uns'].'</td>
  242. <td class="grey" align="center">'.$sql_multis['spree_god'].'</td>
  243. </tr>
  244. </tbody></table>
  245. <br>
  246. <table border="0" cellpadding="0" cellspacing="2" width="480">
  247. <tbody><tr>
  248. <td class="heading" colspan="7" align="center">Pickups Summary</td>
  249. </tr>
  250. <tr>
  251. <td class="smheading" align="center" width="80">Pads</td>
  252. <td class="smheading" align="center" width="80">Armour</td>
  253. <td class="smheading" align="center" width="80">Keg</td>
  254. <td class="smheading" align="center" width="80">Invisibility</td>
  255. <td class="smheading" align="center" width="80">Shield Belt</td>
  256. <td class="smheading" align="center" width="80">Damage Amp</td>
  257. <td class="smheading" align="center" width="80">AntiGrav Boots</td>
  258. </tr>';
  259. $r_pickups = zero_out(small_query("SELECT SUM(pu_pads) AS pu_pads, SUM(pu_armour) AS pu_armour, SUM(pu_keg) AS pu_keg,
  260. SUM(pu_invis) AS pu_invis, SUM(pu_belt) AS pu_belt, SUM(pu_amp) AS pu_amp, SUM(pu_boots) AS pu_boots
  261. FROM uts_player WHERE pid = '$pid'"));
  262. echo'
  263. <tr>
  264. <td class="grey" align="center">'.$r_pickups['pu_pads'].'</td>
  265. <td class="grey" align="center">'.$r_pickups['pu_armour'].'</td>
  266. <td class="grey" align="center">'.$r_pickups['pu_keg'].'</td>
  267. <td class="grey" align="center">'.$r_pickups['pu_invis'].'</td>
  268. <td class="grey" align="center">'.$r_pickups['pu_belt'].'</td>
  269. <td class="grey" align="center">'.$r_pickups['pu_amp'].'</td>
  270. <td class="grey" align="center">'.$r_pickups['pu_boots'].'</td>
  271. </tr>
  272. </tbody></table>
  273. <br>';
  274. include('includes/weaponstats.php');
  275. weaponstats(0, $pid);
  276. echo '<br>';
  277. // Do graph stuff
  278. $bgwhere = "pid = '$pid'";
  279. include("pages/graph_pbreakdown.php");
  280. // Player's ranks
  281. echo'<table border="0" cellpadding="1" cellspacing="1">
  282. <tbody><tr>
  283. <td class="heading" colspan="6" align="center">Ranking</td>
  284. </tr>
  285. <tr>
  286. <td class="smheading" align="center" width="50">N</td>
  287. <td class="smheading" align="center" width="140">Match Type</td>
  288. <td class="smheading" align="center" width="80">Rank</td>
  289. <td class="smheading" align="center" width="50">Matches</td>
  290. <td class="smheading" align="center" width="50">Explain</td>';
  291. if ($pic_enable and basename($_SERVER['PATH_TRANSLATED']) != 'admin.php') echo '<td class="smheading" align="center" width="50">Pics</td>';
  292. echo '</tr>';
  293. $sql_rank = "SELECT g.name AS gamename, r.rank, r.prevrank, r.matches, r.gid, r.pid FROM uts_rank AS r, uts_games AS g WHERE r.gid = g.id AND r.pid = '$pid';";
  294. $q_rank = mysql_query($sql_rank) or die(mysql_error());
  295. while ($r_rank = mysql_fetch_array($q_rank))
  296. {
  297. $r_no = small_query("SELECT (COUNT(*) + 1) AS no FROM uts_rank WHERE gid= '${r_rank['gid']}' and rank > ". get_dp($r_rank['rank']) ."9");
  298. echo'<tr>
  299. <td class="grey" align="center">'.RankImageOrText($r_rank['pid'], $name, $r_no['no'], $r_rank['gid'], $r_rank['gamename'], false, '%IT%').'</td>
  300. <td class="grey" align="center">'.$r_rank['gamename'].'</td>
  301. <td class="grey" align="center">'.get_dp($r_rank['rank']) .' '. RankMovement($r_rank['rank'] - $r_rank['prevrank']) . '</td>
  302. <td class="grey" align="center">'.$r_rank['matches'].'</td>';
  303. echo '<td class="grey" align="center"><a class="grey" href="?p=pexplrank&amp;pid='.$pid.'&amp;gid='.$r_rank['gid'].'">(Click)</a></td>';
  304. if ($pic_enable and basename($_SERVER['PATH_TRANSLATED']) != 'admin.php') echo '<td class="grey" align="center"><a class="grey" href="?p=pinfo&amp;pid='.$pid.'&amp;gid='.$r_rank['gid'].'&amp;pics=1">(Click)</a></td>';
  305. echo '</tr>';
  306. }
  307. echo '</tbody></table>';
  308. $r_pings = small_query("SELECT MIN(lowping * 1) AS lowping, AVG(avgping * 1) AS avgping, MAX(highping * 1) AS highping FROM uts_player WHERE pid = $pid and lowping > 0");
  309. if ($r_pings and $r_pings['lowping'])
  310. {
  311. echo '
  312. <br>
  313. <table border="0" cellpadding="0" cellspacing="2">
  314. <tbody><tr>
  315. <td class="heading" colspan="6" align="center">Pings</td>
  316. </tr>
  317. <tr>
  318. <td class="smheading" align="center" width="80">Min</td>
  319. <td class="smheading" align="center" width="80">Avg</td>
  320. <td class="smheading" align="center" width="80">Max</td>
  321. </tr>
  322. <tr>
  323. <td class="grey" align="center">'.ceil($r_pings['lowping']).'</td>
  324. <td class="grey" align="center">'.ceil($r_pings['avgping']).'</td>
  325. <td class="grey" align="center">'.ceil($r_pings['highping']).'</td>
  326. </tr>
  327. </tbody></table>';
  328. }
  329. echo'<br><table class="box" border="0" cellpadding="1" cellspacing="1">
  330. <tbody><tr>
  331. <td class="heading" colspan="6" align="center">Last 50 Games</td>
  332. </tr>
  333. <tr>
  334. <td class="smheading" align="center" width="80">Match ID</td>
  335. <td class="smheading" align="center" width="220">Date/Time</td>
  336. <td class="smheading" align="center" width="140">Match Type</td>
  337. <td class="smheading" align="center">Map</td>';
  338. if (isset($is_admin) and $is_admin) echo '<td class="smheading" align="center">IP Used</td>';
  339. echo'</tr>';
  340. $sql_recent = "SELECT m.id, m.time, g.name AS gamename, m.mapfile, INET_NTOA(p.ip) AS ip FROM uts_match m, uts_player p, uts_games g
  341. WHERE p.pid = '$pid' AND m.id = p.matchid AND m.gid = g.id ORDER BY time DESC LIMIT 0,50";
  342. $q_recent = mysql_query($sql_recent) or die(mysql_error());
  343. while ($r_recent = mysql_fetch_array($q_recent)) {
  344. $r_time = mdate($r_recent[time]);
  345. $r_mapfile = un_ut($r_recent[mapfile]);
  346. echo'
  347. <tr>
  348. <td class="dark" align="center"><a class="darkid" href="./?p=match&amp;mid='.$r_recent[id].'">'.$r_recent[id].'</a></td>
  349. <td class="dark" align="center"><a class="darkhuman" href="./?p=match&amp;mid='.$r_recent[id].'">'.$r_time.'</a></td>
  350. <td class="grey" align="center">'.$r_recent[gamename].'</td>
  351. <td class="grey" align="center">'.$r_mapfile.'</td>';
  352. if (isset($is_admin) and $is_admin) echo '<td class="grey" align="center">'. $r_recent[ip].'</td>';
  353. echo '</tr>';
  354. }
  355. echo'
  356. </tbody></table>
  357. ';
  358. ?>