PageRenderTime 51ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/functions/challenge.php

https://bitbucket.org/verax/to-ladder
PHP | 513 lines | 424 code | 63 blank | 26 comment | 78 complexity | 2751608e4358e5c668efc6abe246d7ff MD5 | raw file
  1. <?PHP
  2. if(!IsSet($indexloaded)){
  3. header("Location: ./index.php");
  4. }
  5. function team_challenge($ladderid,$cteamid,$teamid){
  6. global $dir, $file, $url, $out, $plyr, $site,$misc;
  7. $now=date("Y-m-d H:i:s");
  8. if(!$ladderid){
  9. include("$dir[func]/error.php");
  10. display_error("Invalid Ladder ID.<br>");
  11. }
  12. $teams=mysql_query("SELECT teamid FROM teammembers WHERE playerid='$plyr[id]'");
  13. while($row = mysql_fetch_array($teams)){
  14. $team = mysql_query("SELECT id FROM ladder_$ladderid WHERE id = '$row[teamid]'");
  15. $tid = mysql_fetch_array($team);
  16. if($tid[id]){
  17. $tmember[teamid] = $tid[id];
  18. }
  19. }
  20. if(!$tmember[teamid]){
  21. include("$dir[func]/error.php");
  22. display_error("You are not allowed to make challenges for this team.<br>");
  23. }
  24. if(($cteamid) && ($cteamid!="$tmember[teamid]")){
  25. include("$dir[func]/error.php");
  26. display_error("Invalid Team ID.<br>");
  27. }
  28. $teaminfo=mysql_query("SELECT teamname FROM teams WHERE id='$tmember[teamid]'");
  29. $tinfo=mysql_fetch_array($teaminfo);
  30. if(!$tinfo[teamname]){
  31. include("$dir[func]/error.php");
  32. display_error("Unknown Team.<br>");
  33. }
  34. $ladderinfo=mysql_query("SELECT * FROM ladders WHERE id='$ladderid'");
  35. $linfo=mysql_fetch_array($ladderinfo);
  36. if(!$linfo[laddername]){
  37. include("$dir[func]/error.php");
  38. display_error("Unknown Ladder.<br>");
  39. }
  40. if(!$linfo[challenge]){
  41. include("$dir[func]/error.php");
  42. display_error("Challenging is not allowed on this ladder.<br>");
  43. }
  44. //CHECK FOR GAME STATUS
  45. if (mysql_num_rows(mysql_query("SELECT id FROM games WHERE status < '1' AND id='$linfo[gameon]'")) > 0){
  46. include("$dir[func]/error.php");
  47. display_error("This Ladder is temporarily closed.<br>");
  48. }
  49. //CHECK IF CHALLENGER IS IN EXISTING CHALLENGE
  50. if(mysql_num_rows(mysql_query("SELECT challenger FROM challenges WHERE (challenger='$cteamid' OR challenged='$cteamid') AND ladderid = '$linfo[id]'")) > 0){
  51. include("$dir[func]/error.php");
  52. display_error("You are already involved in a challenge.<br>");
  53. }
  54. $challengerstats=mysql_query("SELECT status,statusdate,rank FROM ladder_$ladderid WHERE id='$tmember[teamid]'");
  55. $cstats=mysql_fetch_array($challengerstats);
  56. if(($cstats[status]=="10") && ($cstats[statusdate] > $now)){
  57. include("$dir[func]/error.php");
  58. display_error("Your team is locked and cannot challenge untill $cstats[statusdate].<br>");
  59. }
  60. if(($cstats[status]=="21") && ($cstats[statusdate] > $now)){
  61. include("$dir[func]/error.php");
  62. display_error("Your team cannot challenge untill $cstats[statusdate].<br>");
  63. }
  64. //if($cstats[rank]=="1"){
  65. //include("$dir[func]/error.php");
  66. //display_error("You are already ranked 1, There is nobody to challenge.<br>");
  67. //}
  68. if($cstats[rank]=="0"){
  69. $totalranked=mysql_query("SELECT COUNT(*) FROM ladder_$ladderid WHERE rank > '0'");
  70. $totalranks=mysql_fetch_array($totalranked);
  71. $totalranks="$totalranks[0]";
  72. if($totalranks < 1){
  73. include("$dir[func]/error.php");
  74. display_error("There are no ranked teams to challenge.<br>");
  75. }
  76. $challengerank=($totalranks - $linfo[challranks]);
  77. }
  78. else{
  79. $challengerank=($cstats[rank] - $linfo[challranks]);
  80. if($misc[challengedown] == "yes"){
  81. $challengerankdown=($cstats[rank] + $linfo[challranks]);
  82. }else if($misc[challengedown] == "no"){
  83. $challengerankdown=$cstats[rank];
  84. }
  85. }
  86. if($challengerank < 1){
  87. $challengerank="1";
  88. }
  89. $totalranked=mysql_query("SELECT COUNT(*) FROM ladder_$ladderid WHERE rank > '0'");
  90. $totalranked=mysql_fetch_array($totalranked);
  91. $totalranked="$totalranked[0]";
  92. if($challengerankdown > $totalranked){
  93. $challengerankdown=$totalranked;
  94. }
  95. if($teamid){
  96. $challengeranks=mysql_query("SELECT id,status,statusdate FROM ladder_$ladderid WHERE rank >= '$challengerank' AND rank <= '$challengerankdown' AND rank != '$cstats[rank]' AND id='$teamid'");
  97. $challenged=mysql_fetch_array($challengeranks);
  98. if(!$challenged[id]){
  99. include("$dir[func]/error.php");
  100. display_error("Invalid Challenge.<br>");
  101. }
  102. $challengableteam=mysql_query("SELECT teamname FROM teams WHERE id='$teamid'");
  103. $cteam=mysql_fetch_array($challengableteam);
  104. if(!$cteam[teamname]){
  105. include("$dir[func]/error.php");
  106. display_error("Unknown Team.<br>");
  107. }
  108. if(($challenged[status]=="10") && ($challenged[statusdate] > $now)){
  109. include("$dir[func]/error.php");
  110. display_error("This team is locked and cannot be challenged untill $challenged[statusdate].<br>");
  111. }
  112. if(($challenged[status]=="20") && ($challenged[statusdate] > $now)){
  113. include("$dir[func]/error.php");
  114. display_error("This team cannot be challenged untill $challenged[statusdate].<br>");
  115. }
  116. $out[body]=$out[body]."
  117. <table width='100%' align='center' border='0' cellspacing='0' cellpadding='5'>
  118. <tr>
  119. <td width='100%' valign='top' align='left'>
  120. <br><br><br>
  121. <table width='100%' border='1' bordercolor='#000000' cellspacing='0' cellpadding='2'>
  122. <tr class='altcolor'>
  123. <td width='100%' valign='top' align='center'>
  124. <strong>Confirm this challenge</strong><br>
  125. </td>
  126. </tr>
  127. <tr>
  128. <form method='post'>
  129. <td width='100%' valign='center' align='center'>
  130. <table width='100%' align='center' border='0' cellspacing='2' cellpadding='0'>
  131. <tr>
  132. <td width='50%' valign='center' align='left'>
  133. <br><ul>
  134. Ladder: <a href='$url[base]/$file[ladder]?ladder=$ladderid'>$linfo[laddername]</a><br>
  135. Challenger: <a href='$url[base]/$file[teams]?teamid=$tmember[teamid]'>$tinfo[teamname]</a><br>
  136. Challenged: <a href='$url[base]/$file[teams]?teamid=$teamid'>$cteam[teamname]</a>
  137. </ul></td>
  138. <td width='50%' valign='center' align='center'>
  139. Server/Host and Misc. Information<br>
  140. <textarea name='comment' rows='5' cols='50' maxlength='200'>
  141. </textarea><br>
  142. 200 Characters Max</td>
  143. </tr>
  144. </table>
  145. </td>
  146. </tr>
  147. <tr class='altcolor'>
  148. <td width='100%' valign='top' align='center'>
  149. <input type='submit' name='' value='Challenge'>
  150. <input type='hidden' name='action' value='challengeb'>
  151. <input type='hidden' name='ladderid' value='$ladderid'>
  152. <input type='hidden' name='cteamid' value='$tmember[teamid]'>
  153. <input type='hidden' name='teamid' value='$teamid'>
  154. </td>
  155. </tr>
  156. </table>
  157. <br>
  158. </td>
  159. </form>
  160. </tr>
  161. </table>";
  162. }else{
  163. $challengeranks=mysql_query("SELECT id,status,statusdate,rank,wins,losses,percent,streak,skill,forfeits FROM ladder_$ladderid WHERE rank >= '$challengerank' AND rank <= '$challengerankdown' AND rank != '$cstats[rank]' ORDER by rank");
  164. while(list($id,$status,$statusdate,$rank,$wins,$losses,$percent,$streak,$skill,$forfeits)=mysql_fetch_row($challengeranks)){
  165. if(($status=="10") && ($statusdate > $now)){
  166. $id="";
  167. }
  168. else if(($status=="20") && ($statusdate > $now)){
  169. $id="";
  170. }
  171. else if(mysql_num_rows(mysql_query("SELECT challenger FROM challenges WHERE challenger='$id' OR challenged='$id'")) > 0){
  172. $id="";
  173. }
  174. else{
  175. if($id){
  176. $challengableteam=mysql_query("SELECT teamname FROM teams WHERE id='$id'");
  177. $cteam=mysql_fetch_array($challengableteam);
  178. }
  179. if($cteam[teamname]){
  180. $canchall=$canchall."
  181. <tr bgcolor='#000033'>
  182. <td width='' valign='center' align='left'>
  183. <a href='$url[base]/$file[match]?action=challenge&ladderid=$ladderid&cteamid=$tmember[teamid]&teamid=$id'>$cteam[teamname]</a></td>
  184. <td width='' valign='center' align='center'><font color='#0099FF'>$rank</font></td>
  185. <td width='' valign='center' align='center'><font color='#0099FF'>$wins</font></td>
  186. <td width='' valign='center' align='center'><font color='#0099FF'>$losses</font></td>
  187. <td width='' valign='center' align='center'><font color='#0099FF'>$percent%</font></td>
  188. <td width='' valign='center' align='center'><font color='#0099FF'>$streak</font></td>
  189. </tr>";
  190. }
  191. }
  192. }
  193. if($canchall){
  194. $tailmessage="Your Rank: $cstats[rank], Highest Challengable Rank: $challengerank, Challenge Limit: $linfo[challranks]";
  195. }else{
  196. $tailmessage="There are currently no available challenges for you";
  197. }
  198. $out[body]=$out[body]."
  199. <table width='100%' align='center' border='0' cellspacing='0' cellpadding='5'>
  200. <tr>
  201. <td width='100%' valign='top' align='left'>
  202. <br><br><br><br>
  203. <table width='100%' border='0' cellspacing='2' cellpadding='1'>
  204. <tr class='altcolor'>
  205. <td width='100%' valign='top' align='left' colspan='8'>
  206. <font size='1' class='catfont'><strong>
  207. Click on the team you wish to challenge</strong></font></td>
  208. </tr>
  209. <tr class='altcolor'>
  210. <td width='' valign='center' align='left'><font size='1' class='catfont'><strong>Name</strong></font></td>
  211. <td width='' valign='center' align='center'><font size='1' class='catfont'><strong>Rank</strong></font></td>
  212. <td width='' valign='center' align='center'><font size='1' class='catfont'><strong>Wins</strong></font></td>
  213. <td width='' valign='center' align='center'><font size='1' class='catfont'><strong>Losses</strong></font></td>
  214. <td width='' valign='center' align='center'><font size='1' class='catfont'><strong>Win%</strong></font></td>
  215. <td width='' valign='center' align='center'><font size='1' class='catfont'><strong>Streak</strong></font></td>
  216. </tr>
  217. $canchall
  218. <tr class='altcolor'>
  219. <td width='' valign='center' align='center' colspan='8'>
  220. <font size='1'>$tailmessage</font></td>
  221. </tr>
  222. </table>
  223. <br>
  224. </td>
  225. </tr>
  226. </table>";
  227. }//AXA
  228. include("$dir[curtheme]");
  229. }
  230. function team_challengeb($ladderid,$cteamid,$teamid,$comment){
  231. global $dir, $file, $url, $out, $plyr, $site, $misc;
  232. $now=date("Y-m-d H:i:s");
  233. if(!$ladderid){
  234. include("$dir[func]/error.php");
  235. display_error("Invalid Ladder ID.<br>");
  236. }
  237. if(!$cteamid){
  238. include("$dir[func]/error.php");
  239. display_error("Invalid Challenger ID.<br>");
  240. }
  241. if(!$teamid){
  242. include("$dir[func]/error.php");
  243. display_error("Invalid Challenged ID.<br>");
  244. }
  245. if($cteamid=="$teamid"){
  246. include("$dir[func]/error.php");
  247. display_error("You cannot challenge yourself.<br>");
  248. }
  249. if (mysql_num_rows(mysql_query("SELECT teamid FROM teammembers WHERE playerid='$plyr[id]' AND teamid='$cteamid' AND status <= '3'")) < 1){
  250. include("$dir[func]/error.php");
  251. display_error("You are not allowed to make challenges for this team.<br>");
  252. }
  253. //CHECK CHALLENGER
  254. $cteaminfo=mysql_query("SELECT teamname FROM teams WHERE id='$cteamid'");
  255. $ctinfo=mysql_fetch_array($cteaminfo);
  256. $cladderinfo=mysql_query("SELECT id,status,statusdate,rank FROM ladder_$ladderid WHERE id='$cteamid'");
  257. $cladinfo=mysql_fetch_array($cladderinfo);
  258. if((!$ctinfo[teamname]) || (!$cladinfo[id])){
  259. include("$dir[func]/error.php");
  260. display_error("Unable to find your team information.<br>");
  261. }
  262. //CHECK CHALLENGED
  263. $teaminfo=mysql_query("SELECT teamname,teamemail FROM teams WHERE id='$teamid'");
  264. $tinfo=mysql_fetch_array($teaminfo);
  265. $ladderinfo=mysql_query("SELECT id,status,statusdate,rank FROM ladder_$ladderid WHERE id='$teamid'");
  266. $ladinfo=mysql_fetch_array($ladderinfo);
  267. if((!$tinfo[teamname]) || (!$ladinfo[id])){
  268. include("$dir[func]/error.php");
  269. display_error("Unable to find the challenged teams information.<br>");
  270. }
  271. //CHECK LADDER INFO
  272. $ladderinfo=mysql_query("SELECT * FROM ladders WHERE id='$ladderid'");
  273. $linfo=mysql_fetch_array($ladderinfo);
  274. if(!$linfo[laddername]){
  275. include("$dir[func]/error.php");
  276. display_error("Unknown Ladder.<br>");
  277. }
  278. //CHECK IF CHALLENGER IS IN EXISTING CHALLENGE
  279. if(mysql_num_rows(mysql_query("SELECT challenger FROM challenges WHERE (challenger='$cteamid' OR challenged='$cteamid') AND ladderid = '$linfo[id]'")) > 0){
  280. include("$dir[func]/error.php");
  281. display_error("You are already involved in a challenge.<br>");
  282. }
  283. //CHECK IF CHALLENGED IS IN EXISTING CHALLENGE
  284. if(mysql_num_rows(mysql_query("SELECT challenger FROM challenges WHERE challenger='$teamid' OR challenged='$teamid'")) > 0){
  285. include("$dir[func]/error.php");
  286. display_error("This team is already involved in a challenge.<br>");
  287. }
  288. //CHECK CHALLENGERs STATUS
  289. $challengerstats=mysql_query("SELECT status,statusdate,rank FROM ladder_$ladderid WHERE id='$cteamid'");
  290. $cstats=mysql_fetch_array($challengerstats);
  291. if(($cstats[status]=="10") && ($cstats[statusdate] > $now)){
  292. include("$dir[func]/error.php");
  293. display_error("Your team is locked and cannot challenge untill $cstats[statusdate].<br>");
  294. }
  295. if(($cstats[status]=="21") && ($cstats[statusdate] > $now)){
  296. include("$dir[func]/error.php");
  297. display_error("Your team cannot challenge untill $cstats[statusdate].<br>");
  298. }
  299. //CHECK CHALLENGEDs STATUS
  300. $challengedstats=mysql_query("SELECT status,statusdate,rank FROM ladder_$ladderid WHERE id='$teamid'");
  301. $stats=mysql_fetch_array($challengedstats);
  302. if(($stats[status]=="10") && ($stats[statusdate] > $now)){
  303. include("$dir[func]/error.php");
  304. display_error("This team is locked and cannot be challenged untill $stats[statusdate].<br>");
  305. }
  306. if(($stats[status]=="21") && ($stats[statusdate] > $now)){
  307. include("$dir[func]/error.php");
  308. display_error("This team cannot be challenged untill $stats[statusdate].<br>");
  309. }
  310. if($cstats[rank]=="0"){
  311. $totalranked=mysql_query("SELECT COUNT(*) FROM ladder_$ladderid WHERE rank > '0'");
  312. $totalranks=mysql_fetch_array($totalranked);
  313. $totalranks="$totalranks[0]";
  314. if($totalranks < 1){
  315. include("$dir[func]/error.php");
  316. display_error("There are no ranked teams to challenge.<br>");
  317. }
  318. $challengerank=($totalranks - $linfo[challranks]);
  319. }else{
  320. $challengerank=($cstats[rank] - $linfo[challranks]);
  321. if($misc[challengedown] == "yes"){
  322. $challengerankdown=($cstats[rank] + $linfo[challranks]);
  323. }else if($misc[challengedown] == "no"){
  324. $challengerankdown=$cstats[rank];
  325. }
  326. }
  327. if($challengerank < 1){
  328. $challengerank="1";
  329. }
  330. $totalranked=mysql_query("SELECT COUNT(*) FROM ladder_$ladderid WHERE rank > '0'");
  331. $totalranked=mysql_fetch_array($totalranked);
  332. $totalranked="$totalranked[0]";
  333. if($challengerankdown > $totalranked){
  334. $challengerankdown=$totalranked;
  335. }
  336. //CHECK IF VALID RANKED CHALLENGE
  337. if(mysql_num_rows(mysql_query("SELECT rank FROM ladder_$ladderid WHERE id='$teamid' AND (rank >= '$challengerank' AND rank <= '$challengerankdown') AND rank != '$cstats[rank]'")) < 1){
  338. include("$dir[func]/error.php");
  339. display_error("Invalid Challenge.<br>");
  340. }
  341. if($comment){
  342. $comment=wordwrap($comment,20," ",1);
  343. include("$dir[func]/checkdata.php");
  344. $comment=change_censor($comment);
  345. $comment=change_charecters($comment);
  346. }
  347. // CREATE CHALLENGE
  348. $tday=date("Y-m-d H:i:s");
  349. $mcode=md5(uniqid(microtime()));
  350. $mcode="$mcode";
  351. mysql_query("INSERT INTO challenges VALUES (
  352. '$mcode',
  353. '$cteamid',
  354. '$teamid',
  355. '$ctinfo[teamname]',
  356. '$tinfo[teamname]',
  357. '$ladderid',
  358. '$cstats[rank]',
  359. '$stats[rank]',
  360. '$comment',
  361. '$plyr[id]',
  362. '$tday',
  363. '',
  364. '',
  365. '',
  366. '',
  367. '',
  368. '',
  369. '',
  370. '',
  371. '');");
  372. $getchallenge=mysql_query("SELECT challid FROM challenges WHERE challenger='$cteamid' AND challenged='$teamid'");
  373. $chall=mysql_fetch_array($getchallenge);
  374. if($chall[challid]){
  375. //UPDATE CHALLENGER
  376. mysql_query("UPDATE ladder_$ladderid SET
  377. statusdisplay='<a href=$url[base]/$file[match]?challid=$chall[challid]>Has challenged</a>'
  378. WHERE id='$cteamid'");
  379. //UPDATE CHALLENGED
  380. mysql_query("UPDATE ladder_$ladderid SET
  381. statusdisplay='<a href=$url[base]/$file[match]?challid=$chall[challid]>Has been challenged</a>'
  382. WHERE id='$teamid'");
  383. //SEND EMAIL TO CHALLENGED TEAM
  384. $emailbody="You have been challenged on $site[shortname]:
  385. Your Team: $tinfo[teamname]
  386. Challenging Team: $ctinfo[teamname]
  387. $url[base]/$file[teams]?teamid=$cteamid
  388. Ladder: $linfo[laddername]\n
  389. You must respond to this challenge within $linfo[respondhours] hours. If you fail to respond you will recieve an automatic forfeit loss.\n
  390. Go to the following url to respond to this challenge or click on respond to challenge on the ladder page:
  391. $url[base]/$file[match]?action=respond&challid=$chall[challid]";
  392. include("$dir[func]/email.php");
  393. send_email($tinfo[teamname],$tinfo[teamemail],"Challenge Notification",$emailbody);
  394. $out[body]=$out[body]."
  395. <br><br><br>
  396. <table width='100%' border='1' bordercolor='#000000' cellspacing='0' cellpadding='2'>
  397. <tr class='altcolor'>
  398. <td width='100%' valign='top' align='center'>
  399. <strong>Your Challenge has been recorded</strong><br>
  400. </td>
  401. </tr>
  402. <tr>
  403. <td width='100%' valign='center' align='left'>
  404. <br><ul>
  405. Ladder: <a href='$url[base]/$file[ladder]?ladderid=$ladderid'>$linfo[laddername]</a><br>
  406. Challenger: <a href='$url[base]/$file[teams]?teamid=$cteamid'>$ctinfo[teamname]</a><br>
  407. Your Rank: $cstats[rank]<br>
  408. Challenged: <a href='$url[base]/$file[teams]?teamid=$teamid'>$tinfo[teamname]</a><br>
  409. Challenged Rank: $stats[rank]<br>
  410. </ul></td>
  411. </tr>
  412. <tr class='altcolor'>
  413. <td width='100%' valign='top' align='center'>
  414. <strong><a href='$url[base]/$file[match]?challid=$chall[challid]'>View your challenge</a></strong><br>
  415. </td>
  416. </tr>
  417. </table>";
  418. }else{
  419. $out[body]=$out[body]."
  420. <table width='100%' border='1' bordercolor='#000000' cellspacing='0' cellpadding='2'>
  421. <tr class='altcolor'>
  422. <td width='100%' valign='top' align='center'>
  423. <strong>Challenge Error</strong><br>
  424. </td>
  425. </tr>
  426. <tr>
  427. <td width='100%' valign='center' align='left'>
  428. <br><ul>
  429. An Unknown Error has occurred<br>
  430. Contact Staff for help
  431. </ul></td>
  432. </tr>
  433. <tr class='altcolor'>
  434. <td width='100%' valign='top' align='center'>
  435. <strong>Challenge Error</strong><br>
  436. </td>
  437. </tr>
  438. </table>";
  439. }
  440. include("$dir[curtheme]");
  441. }
  442. /*
  443. 1 = challenger-matchnotaccepted <- cant challenge
  444. 2 = challenged-matchnotaccepted <- cant challenge
  445. 3 = challenger-matchscheduled <- cant challenge
  446. 4 = challenged-matchscheduled <- cant challenge
  447. 5 = wonchallenge <- 24 hour window cant be challenged
  448. 6 = lostchallenge <- cant challenge for 24 hours
  449. */
  450. ?>