PageRenderTime 50ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/functions/admin_reportmatch.php

https://bitbucket.org/verax/to-ladder
PHP | 441 lines | 425 code | 13 blank | 3 comment | 10 complexity | 68e20643a39e602148f48e1ae5221204 MD5 | raw file
  1. <?
  2. if(!IsSet($indexloaded)){
  3. header("Location: ./index.php");
  4. }
  5. //CHECK ADMIN ACCESS LEVEL
  6. if($admn[access] < 25){
  7. include("$dir[func]/error.php");
  8. display_error("You are not allowed to perform this function.<br>");
  9. }
  10. function admin_reportmatch(){
  11. global $dir, $url, $out, $site, $admn;
  12. //GET LADDERS
  13. $ladderslist=mysql_query("SELECT id,laddername FROM ladders ORDER by laddername");
  14. while(list($id,$name)=mysql_fetch_row($ladderslist)){
  15. $theladders=$theladders."<option value='$id'>$name</option>";
  16. $foundladders=1;
  17. }
  18. if(!$foundladders){
  19. include("$dir[func]/error.php");
  20. display_error("There is no ladders.<br>");
  21. }
  22. $tablehead=table_head("show","100%","","center");
  23. $tablefoot=table_foot("show");
  24. $bannerhead=table_head("show","488","80","center");
  25. $bannerfoot=table_foot("show");
  26. $out[body]=$out[body]."
  27. <center>
  28. $bannerhead
  29. $out[banner]
  30. $bannerfoot
  31. </center>
  32. <br>
  33. $tablehead
  34. <table width='100%' border='1' bordercolor='#000000' cellspacing='0' cellpadding='2'>
  35. <tr class='altcolor'>
  36. <form method='post'>
  37. <td width='100%' valign='top' align='center'>
  38. <strong>Report Match</strong><br>
  39. </td>
  40. </tr>
  41. <tr>
  42. <td width='100%' valign='center' align='center'>
  43. <br>
  44. Select a ladder<br>
  45. <select name='ladderid'>$theladders</select><br>
  46. <br></td>
  47. </tr>
  48. <tr class='altcolor'>
  49. <td width='100%' valign='top' align='center'>
  50. <input type='hidden' name='action' value='reportmatchb'>
  51. <input type='submit' name='' value='Select Ladder'>
  52. </td>
  53. </form>
  54. </tr>
  55. </table>
  56. $tablefoot";
  57. include("$dir[curtheme]");
  58. }
  59. function admin_reportmatchb($ladderid){
  60. global $dir, $url, $out, $site, $admn;
  61. if(!$ladderid){
  62. include("$dir[func]/error.php");
  63. display_error("Invalid Ladder ID.<br>");
  64. }
  65. if($admn[access] < 99){
  66. if (mysql_num_rows(mysql_query("SELECT staffid FROM staffaccess WHERE staffid='$admn[id]' AND ladderid='$ladderid'")) < 1){
  67. include("$dir[func]/error.php");
  68. display_error("You are not allowed to report matches on this laddder.<br>");
  69. }
  70. }
  71. //GET TEAMS
  72. $teamslist=mysql_query("SELECT id FROM ladder_$ladderid");
  73. while(list($id)=mysql_fetch_row($teamslist)){
  74. $name=mysql_fetch_array(mysql_query("SELECT teamname FROM teams WHERE id='$id'"));
  75. $theteams=$theteams."<option value='$id'>$name[teamname]</option>";
  76. $foundladders=1;
  77. }
  78. if(!$foundladders){
  79. include("$dir[func]/error.php");
  80. display_error("There is no teams on this ladder.<br>");
  81. }
  82. $tablehead=table_head("show","100%","","center");
  83. $tablefoot=table_foot("show");
  84. $bannerhead=table_head("show","488","80","center");
  85. $bannerfoot=table_foot("show");
  86. $out[body]=$out[body]."
  87. <center>
  88. $bannerhead
  89. $out[banner]
  90. $bannerfoot
  91. </center>
  92. <br>
  93. $tablehead
  94. <table width='100%' border='1' bordercolor='#000000' cellspacing='0' cellpadding='2'>
  95. <tr class='altcolor'>
  96. <form method='post'>
  97. <td width='100%' valign='top' align='center'>
  98. <strong>Report Match</strong><br>
  99. </td>
  100. </tr>
  101. <tr>
  102. <td width='100%' valign='center' align='center'>
  103. <br>
  104. Winning Team<br>
  105. <select name='wteamid'>$theteams</select><br>
  106. Losing Team<br>
  107. <select name='lteamid'>$theteams</select><br>
  108. <br></td>
  109. </tr>
  110. <tr class='altcolor'>
  111. <td width='100%' valign='top' align='center'>
  112. <input type='hidden' name='action' value='reportmatchc'>
  113. <input type='hidden' name='ladderid' value='$ladderid'>
  114. <input type='submit' name='' value='Report Match'>
  115. </td>
  116. </form>
  117. </tr>
  118. </table>
  119. $tablefoot";
  120. include("$dir[curtheme]");
  121. }
  122. function admin_reportmatchc($ladderid,$wteamid,$lteamid){
  123. global $dir, $url, $out, $site, $admn, $misc, $file;
  124. if(!$ladderid){
  125. include("$dir[func]/error.php");
  126. display_error("Invalid Ladder ID.<br>");
  127. }
  128. if((!$wteamid) || (!$lteamid)){
  129. include("$dir[func]/error.php");
  130. display_error("Invalid Team ID's.<br>");
  131. }
  132. if($wteamid=="$lteamid"){
  133. include("$dir[func]/error.php");
  134. display_error("The winner and loser are the same.<br>");
  135. }
  136. $ladderinfo=mysql_query("SELECT laddername,openplay FROM ladders WHERE id='$ladderid'");
  137. $ladder=mysql_fetch_array($ladderinfo);
  138. //GET WINNER STATS
  139. $winnerteam=mysql_query("SELECT teamname FROM teams WHERE id='$wteamid'");
  140. $winner=mysql_fetch_array($winnerteam);
  141. $winteaminfo=mysql_query("SELECT status,rank,games,percent FROM ladder_$ladderid WHERE id='$wteamid'");
  142. $wtinfo=mysql_fetch_array($winteaminfo);
  143. //GET LOSER STATS
  144. $loserteam=mysql_query("SELECT teamname FROM teams WHERE id='$lteamid'");
  145. $loser=mysql_fetch_array($loserteam);
  146. $losteaminfo=mysql_query("SELECT status,rank,games,percent FROM ladder_$ladderid WHERE id='$lteamid'");
  147. $ltinfo=mysql_fetch_array($losteaminfo);
  148. // GET SKILL INFO
  149. if($wtinfo[rank] > $ltinfo[rank]){
  150. $rankdifference=($wtinfo[rank] - $ltinfo[rank]);
  151. }else{
  152. $rankdifference="1";
  153. }
  154. if($ltinfo[percent]){
  155. $percentoratio=($wtinfo[percent] / $ltinfo[percent]);
  156. }else{
  157. $percentoratio="1";
  158. }
  159. //CHECK FOR CHALLENGE OR IF OPEN PLAY IS ALLOWED
  160. $thechallenge=mysql_query("SELECT * FROM challenges WHERE challenger='$wteamid' AND challenged='$lteamid' AND finalizedby > '0' OR challenger='$lteamid' AND challenged='$wteamid' AND finalizedby > '0'");
  161. $chall=mysql_fetch_array($thechallenge);
  162. if($chall[challid]){
  163. if($misc[challranking] < 2){
  164. if($match[winnerid]=="$chall[challenger]"){
  165. $wtempnewrank="$chall[challengedrank]";
  166. }else{
  167. $wtempnewrank=0;
  168. }
  169. }
  170. else if($misc[challranking] > 1){
  171. if($match[winnerid]=="$chall[challenger]"){
  172. $wtempnewrank=($chall[challengedrank] / 2 - 0.5);
  173. }else{
  174. $wtempnewrank=0;
  175. }
  176. }
  177. else{
  178. $wtempnewrank=0;
  179. }
  180. }else{
  181. $wtempnewrank=0;
  182. }
  183. if($chall[challid]){
  184. //DELETE CHALLENGE
  185. mysql_query("DELETE FROM challenges WHERE challid='$chall[challid]'");
  186. }
  187. //ADD TO UNVALIDATED MATCHES
  188. $tday=date("Y-m-d H:i:s");
  189. $mcode=md5(uniqid(microtime()));
  190. $mcode="$mcode";
  191. $ip=getenv("REMOTE_ADDR");
  192. mysql_query("INSERT INTO matchdb VALUES (
  193. '$mcode',
  194. '$wteamid',
  195. '$lteamid',
  196. '$winner[teamname]',
  197. '$loser[teamname]',
  198. '$ladderid',
  199. '$ladder[laddername]',
  200. '$wtinfo[rank]',
  201. '$ltinfo[rank]',
  202. '0',
  203. '0',
  204. '0',
  205. '0',
  206. '0',
  207. '0',
  208. '0',
  209. '0',
  210. '0',
  211. '0',
  212. '0',
  213. '$tday',
  214. '$ip',
  215. '0',
  216. '$tday',
  217. '$ip');");
  218. $getcode=mysql_query("SELECT matchid FROM matchdb WHERE winnerid='$wteamid' AND loserid='$lteamid'");
  219. $match=mysql_fetch_array($getcode);
  220. $matchcode="$match[matchid]";
  221. //GET WINNERS LADDER STATS
  222. $winnerladder=mysql_query("SELECT * FROM ladder_$ladderid WHERE id='$wteamid'");
  223. $wlinfo=mysql_fetch_array($winnerladder);
  224. //GET LOSERS LADDER STATS
  225. $loserladder=mysql_query("SELECT * FROM ladder_$ladderid WHERE id='$lteamid'");
  226. $llinfo=mysql_fetch_array($loserladder);
  227. //GET TOTAL RANKERS
  228. $totalranked=mysql_query("SELECT COUNT(*) FROM ladder_$ladderid WHERE rank > '0'");
  229. $totalranks=mysql_fetch_array($totalranked);
  230. $totalranks="$totalranks[0]";
  231. if(!$chall[challid]){
  232. //Winner moves half way up to losers position
  233. if($misc[ranking] < 2){
  234. //UPDATE LADDER RANKS
  235. //IF BOTH TEAMS ARE ALREADY RANKED
  236. if(($wtinfo[rank] > 0) && ($ltinfo[rank] > 0)){
  237. $wtempnewrank=($wtinfo[rank] + $ltinfo[rank]);
  238. $wtempnewrank=($wtempnewrank / 2 - 0.5);
  239. if($wtempnewrank > $totalranks){
  240. $wtempnewrank="$totalranks";
  241. }
  242. }
  243. else if($wtinfo[rank] < 1){
  244. $wtempnewrank=($totalranks + 1);
  245. }else{
  246. $wtempnewrank="";
  247. }
  248. //Winner takes losers position
  249. }else if($misc[ranking] > 1){
  250. //UPDATE LADDER RANKS
  251. //IF BOTH TEAMS ARE ALREADY RANKED
  252. if(($wtinfo[rank] > 0) && ($ltinfo[rank] > 0)){
  253. $wtempnewrank=$ltinfo[rank];
  254. }
  255. else if($wtinfo[rank] < 1){
  256. $wtempnewrank=($totalranks + 1);
  257. }else{
  258. $wtempnewrank="";
  259. }
  260. }else{
  261. $wtempnewrank="";
  262. }
  263. }
  264. $wtempnewrank=round($wtempnewrank);
  265. include("$dir[func]/rankadjust.php");
  266. //IF RANK IS BETTER THAN CURRENT RANK UPDATE LADDER
  267. if(($wtempnewrank) && ($wtempnewrank > 0)){
  268. if(($wtempnewrank < $wlinfo[rank]) || ($wlinfo[rank] < 1)){
  269. update_teamranks($ladderid,$wteamid,$wtempnewrank);
  270. $updatedrank="$wtempnewrank";
  271. }
  272. }
  273. //UPDATE WINNERS LADDER STATS
  274. if($updatedrank){
  275. $newlastrank="$wlinfo[rank]";
  276. if(($updatedrank < $wlinfo[bestrank]) || ($wlinfo[bestrank] < 1)){
  277. $newbestrank="$updatedrank";
  278. }else{
  279. $newbestrank="$wlinfo[bestrank]";
  280. }
  281. }else{
  282. $newlastrank="$wlinfo[lastrank]";
  283. $newbestrank="$wlinfo[bestrank]";
  284. }
  285. $newwins=($wlinfo[wins] + 1);
  286. $newgames=($newwins + $wlinfo[losses]);
  287. $newpercent=round($newwins / $newgames * 100);
  288. $newstreak=($wlinfo[streak] + 1);
  289. if($newstreak < 1){
  290. $newstreak="1";
  291. }
  292. if($newstreak > $wlinfo[beststreak]){
  293. $newbeststreak="$newstreak";
  294. }else{
  295. $newbeststreak="$wlinfo[beststreak]";
  296. }
  297. if($llinfo[rank] > 0){
  298. $newpoints=($totalranks - $llinfo[rank]);
  299. $newpoints=round($newpoints / 10);
  300. }
  301. if($newpoints < 10){
  302. $newpoints="10";
  303. }
  304. $newskill=($wlinfo[skill] + $totalkills);
  305. $newpoints=($newpoints + $wlinfo[points]);
  306. mysql_query("UPDATE ladder_$ladderid SET
  307. lastmatch='$tday',
  308. lastplayed='$lteamid',
  309. statusdisplay='',
  310. lastrank='$newlastrank',
  311. bestrank='$newbestrank',
  312. wins='$newwins',
  313. games='$newgames',
  314. percent='$newpercent',
  315. streak='$newstreak',
  316. beststreak='$newbeststreak',
  317. points='$newpoints',
  318. skill='$newskill'
  319. WHERE id='$wteamid'");
  320. //UPDATE LOSERS LADDER STATS
  321. $newlastrank="$llinfo[rank]";
  322. if(($llinfo[rank] < $llinfo[bestrank]) || ($llinfo[bestrank]=="0")){
  323. $newbestrank="$llinfo[rank]";
  324. }else{
  325. $newbestrank="$llinfo[bestrank]";
  326. }
  327. if($llinfo[rank] > $llinfo[worstrank]){
  328. $newworstrank="$llinfo[rank]";
  329. }else{
  330. $newworstrank="$llinfo[worstrank]";
  331. }
  332. $newlosses=($llinfo[losses] + 1);
  333. $newgames=($newlosses + $llinfo[wins]);
  334. $newpercent=round($llinfo[wins] / $newgames * 100);
  335. $newstreak=($llinfo[streak] - 1);
  336. if($newstreak > 0){
  337. $newstreak="-1";
  338. }
  339. if($newstreak < $llinfo[worststreak]){
  340. $newworststreak="$newstreak";
  341. }else{
  342. $newworststreak="$llinfo[worststreak]";
  343. }
  344. $newskill=($llinfo[skill] + $match[skill]);
  345. mysql_query("UPDATE ladder_$ladderid SET
  346. lastmatch='$tday',
  347. lastplayed='$wteamid',
  348. statusdisplay='',
  349. lastrank='$newlastrank',
  350. bestrank='$newbestrank',
  351. worstrank='$newworstrank',
  352. losses='$newlosses',
  353. games='$newgames',
  354. percent='$newpercent',
  355. streak='$newstreak',
  356. worststreak='$newworststreak',
  357. skill='$newskill'
  358. WHERE id='$lteamid'");
  359. $ranksadjusted=rank_checkadjust($ladderid);
  360. $matchcode="$match[matchid]";
  361. $out[body]=$out[body]."
  362. <center>
  363. $bannerhead
  364. $out[banner]
  365. $bannerfoot
  366. </center>
  367. <br>
  368. $tablehead
  369. <table width='100%' border='1' bordercolor='#000000' cellspacing='0' cellpadding='2' valign='center'>
  370. <tr class='altcolor'>
  371. <td width='100%' valign='top' align='center'>
  372. <strong>The loss has been reported</strong><br>
  373. </td>
  374. </tr>
  375. <tr>
  376. <td width='100%' valign='center' align='left'>
  377. <br><ul><center>
  378. The winner has recieved the win and the ranks have been updated.<br>
  379. </ul></td></center>
  380. </tr>
  381. <tr class='altcolor'>
  382. <td width='100%' valign='top' align='center'>
  383. <strong><a href='$url[base]/$file[ladder]?ladderid=$ladderid'>View the Ladder</a></strong><br>
  384. </td>
  385. </tr>
  386. $tablefoot
  387. </table>";
  388. include("$dir[curtheme]");
  389. }
  390. ?>