PageRenderTime 57ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/bracket_admin_post.php

https://bitbucket.org/qrealka/brackets
PHP | 838 lines | 674 code | 81 blank | 83 comment | 183 complexity | a6b9f9b9ae0a80644f46d8a0afedd2f0 MD5 | raw file
  1. <?
  2. require_once "bracket_connect.php";
  3. require_once "bracket_cfg.php";
  4. require_once "bracket_ccode.php";
  5. require_once "bracket_login.php"; // plug-in security ;)
  6. //var_dump($_POST);
  7. $DEBUG = 0;
  8. function decho ($string) {
  9. global $DEBUG;
  10. if ($DEBUG == 1)
  11. echo "debug: " . $string . "<br>\n";
  12. }
  13. function checkSqlErrors($line)
  14. {
  15. if (mysql_error())
  16. echo "error php line $line:<br>" . mysql_error() . "<br>\n";
  17. }
  18. extract ($_GET);
  19. extract ($_POST, EXTR_OVERWRITE);
  20. if (isset ($delSID))
  21. {
  22. $nSpot1 = 0;
  23. $nSpot2 = 0;
  24. if (strstr ($delSID, "/"))
  25. list ($nSpot1, $nSpot2) = split ("/", $delSID);
  26. else
  27. $nSpot1 = $delSID;
  28. //echo "nSpot1 = $nSpot1<br>nSpot2 = $nSpot2<br>";
  29. if ($nSpot1) {
  30. db_query ("update pbs_bracket set PlayerID = 0, Timestamp = Timestamp where ID = $nSpot1");
  31. db_query ("delete from pbs_rounds where BracketID = $nSpot1");
  32. db_query ("delete from pbs_comments where BracketID = $nSpot1");
  33. }
  34. if ($nSpot2) {
  35. db_query ("update pbs_bracket set PlayerID = 0, Timestamp = Timestamp where ID = $nSpot2");
  36. //db_query ("delete from pbs_rounds where BracketID = $nSpot2 or DropInID = $nSpot2");
  37. }
  38. header ("Location: bracket_admin.php");
  39. } else
  40. if (isset ($signupDel))
  41. {
  42. db_query ("delete from pbs_signup where ID = $signupDel");
  43. header ("Location: bracket_admin.php?ViewMode=Signups");
  44. } else
  45. if (isset ($setSignups) && $setSignups == "ClearList")
  46. {
  47. if (isset ($Confirmed))
  48. {
  49. if ($Confirmed == "Yes")
  50. { // confirmed the signups clearing
  51. db_query ("truncate pbs_signup");
  52. safeUnset("Confirm");
  53. }
  54. header("Location: bracket_admin.php?ViewMode=Signups");
  55. exit;
  56. } else
  57. { // make a signups clear confirmation request
  58. $_SESSION["Confirm"] =
  59. array
  60. (
  61. "return" => $_SERVER['REQUEST_URI'],
  62. "variable" => "setSignups",
  63. "value" => "ClearList",
  64. "body" => "Are you sure you want to clear the signups list?",
  65. "cfname" => "Confirmed",
  66. );
  67. header("Location: bracket_confirm.php");
  68. exit;
  69. }
  70. } else
  71. if (isset ($remove))
  72. {
  73. if (isset ($Confirmed))
  74. {
  75. if ($Confirmed == "Yes")
  76. { // confirmation granted
  77. if ($remove == "DBOnly")
  78. { // clean out the database
  79. // read in the table array
  80. $errors = 0;
  81. require_once "bracket_install.inc";
  82. foreach ($CTables as $table)
  83. {
  84. mysql_query ("drop table $table[Name]");
  85. if (mysql_error())
  86. {
  87. echo "Error Dropping Table [$table[Name]]: " . mysql_error() . "<br>\n";
  88. $errors ++;
  89. }
  90. }
  91. if (!$errors)
  92. {
  93. if (mysql_num_rows(mysql_query ("show tables")) == 0)
  94. {
  95. $res = mysql_query ("select database()");
  96. if (mysql_error())
  97. {
  98. echo "Error getting database name. Database could not be dropped.<br>Details: " . mysql_error() . "<br>\n";
  99. $errors ++;
  100. } else
  101. {
  102. $dbname = mysql_result ($res, 0);
  103. mysql_query ("drop database $dbname");
  104. if (mysql_error())
  105. {
  106. echo "Error dropping database. Maybe you lack permissions?<br>Details: " . mysql_error() . "<br>\n";
  107. $errors ++;
  108. } else echo "Database '$dbname' has been dropped successfully.<br>\n";
  109. }
  110. } else echo "Database contains table entries other than our own, it will not be dropped.<br>\n";
  111. }
  112. @unlink ("bracket_connect.php");
  113. if (!$errors)
  114. echo "<br>Bracket SQL data successfully removed.<br>Demos and Screenshots have been left untouched.<br>\n";
  115. else
  116. echo "<br>Some errors occured during uninstall.<br>\n";
  117. exit;
  118. } else
  119. if ($remove == "Full")
  120. { // clean out the database and remove demos/screenshots
  121. $errors = 0;
  122. require_once "bracket_install.inc";
  123. $arrFiles = array();
  124. $res = mysql_query ("select DemoURL from pbs_rounds where DemoURL is not null");
  125. while ($file = mysql_fetch_assoc ($res))
  126. $arrFiles [] = $file["DemoURL"];
  127. foreach ($arrFiles as $file)
  128. {
  129. if (!unlink ($destinationPath."/".$file))
  130. {
  131. echo "Error Deleting Demo: $destinationPath/$file<br>\n";
  132. $errors ++;
  133. }// echo "deleted $destinationPath/$file?<br>\n";
  134. }
  135. if ($errors)
  136. { // oh no errors!
  137. echo "<br>Errors Occured while deleting Demos... database drop will not occur.<br>\n";
  138. echo "If you still want to drop database, use the db-only remove option.<br>\n";
  139. } else
  140. {
  141. echo "Deleted " . count ($arrFiles) . " demos successfully.<br>\n";
  142. // clear screenshots (ez pie)
  143. $handle = opendir ("screenshots");
  144. while ($file = readdir ($handle))
  145. {
  146. if (is_file ("screenshots/".$file))
  147. if (!unlink ("screenshots/".$file))
  148. {
  149. echo "Error deleting screenshot $file<br>\n";
  150. $errors++;
  151. }// else echo "deleted $file?<br>\n";
  152. }
  153. closedir ($handle);
  154. if (!$errors)
  155. { // if no errors occured thus far, drop the tables!
  156. echo "Screenshots deleted successfully.<br>\n";
  157. foreach ($CTables as $table)
  158. {
  159. mysql_query ("drop table $table[Name]");
  160. if (mysql_error())
  161. {
  162. echo "Error Dropping Table [$table[Name]]: " . mysql_error() . "<br>\n";
  163. $errors ++;
  164. } else echo "Table $table[Name] has been dropped successfully.<br>\n";
  165. }
  166. }
  167. if (!$errors)
  168. { // if no errors occured while droppin tables, see if database is empty, if it is drop it too
  169. if (mysql_num_rows(mysql_query ("show tables")) == 0)
  170. {
  171. $res = mysql_query ("select database()");
  172. if (mysql_error())
  173. {
  174. echo "Error getting database name. Database could not be dropped.<br>Details: " . mysql_error() . "<br>\n";
  175. $errors ++;
  176. } else
  177. {
  178. $dbname = mysql_result ($res, 0);
  179. mysql_query ("drop database $dbname");
  180. if (mysql_error())
  181. {
  182. echo "Error dropping database. Maybe you lack permissions?<br>Details: " . mysql_error() . "<br>\n";
  183. $errors ++;
  184. } else echo "Database '$dbname' has been dropped successfully.<br>\n";
  185. }
  186. } else echo "Database contains table entries other than our own, it will not be dropped.<br>\n";
  187. }
  188. }
  189. @unlink ("bracket_connect.php");
  190. if (!$errors)
  191. echo "<br>Bracket has been successfully uninstalled.<br>SQL data, demos, and screenshots were all removed!.<br>\n";
  192. else
  193. echo "<br>Some errors occured during uninstall, page will not be redirected.<br>\n";
  194. exit;
  195. }
  196. else
  197. echo "Confirmed = [$Confirmed] stuck<br>\n";
  198. }
  199. } else
  200. {
  201. $desc = ($remove == "DBOnly") ? "database-only" : "full-bracket";
  202. $_SESSION["Confirm"] =
  203. array
  204. (
  205. "return" => "bracket_admin_post.php",
  206. "variable" => "remove",
  207. "value" => "$remove",
  208. "body" => "Are you sure you want to proceed with the $desc erasure?",
  209. "cfname" => "Confirmed",
  210. );
  211. header("Location: bracket_confirm.php");
  212. exit;
  213. }
  214. }
  215. if (isset ($delMap))
  216. {
  217. db_query ("delete from pbs_mappool where ID = $delMap");
  218. header ("Location: bracket_admin.php?ViewMode=MapPool");
  219. exit;
  220. }
  221. if (isset ($addReferee) && isset ($iRefName))
  222. {
  223. $iRefAdmin = (isset ($iRefAdmin)) ? 'Y' : 'N';
  224. db_query ("insert into pbs_referees (RefName, Login, Passwd, bIsAdmin) values ('$iRefName', '$iRefLogin', md5('$iRefPasswd'), '$iRefAdmin')");
  225. if (mysql_error()) echo mysql_error();
  226. else header ("Location: bracket_admin.php?ViewMode=Referees");
  227. }
  228. if (isset ($updateReferee) && isset ($iRefName))
  229. {
  230. $iRefAdmin = (isset ($iRefAdmin)) ? 'Y' : 'N';
  231. if (isset($iRefPasswd) && strlen($iRefPasswd) > 1)
  232. db_query ("update pbs_referees set RefName = '$iRefName', Login = '$iRefLogin', Passwd = md5('$iRefPasswd'), bIsAdmin = '$iRefAdmin' where ID = $iRefID");
  233. else
  234. db_query ("update pbs_referees set RefName = '$iRefName', Login = '$iRefLogin', bIsAdmin = '$iRefAdmin' where ID = $iRefID");
  235. if (mysql_error()) echo mysql_error();
  236. else header ("Location: bracket_admin.php?ViewMode=Referees");
  237. }
  238. if (isset ($delReferee))
  239. {
  240. db_query ("delete from pbs_referees where ID = $delReferee");
  241. if (mysql_error()) echo mysql_error();
  242. else header ("Location: bracket_admin.php?ViewMode=Referees");
  243. }
  244. if (isset ($delIpBan))
  245. {
  246. if (get_magic_quotes_gpc()) $delIpBan = stripslashes($delIpBan);
  247. db_query ("delete from pbs_blockedips where IP = $delIpBan");
  248. if (mysql_error()) echo mysql_error();
  249. else header ("Location: bracket_admin.php?ViewMode=Referees");
  250. }
  251. if (isset ($addIpBan))
  252. { // -1 indicates a manually added ip block
  253. db_query ("insert into pbs_blockedips (IP, FailedAuths) values ('$iIpAddy', -1)");
  254. if (mysql_error()) echo mysql_error();
  255. else header ("Location: bracket_admin.php?ViewMode=Referees");
  256. exit;
  257. }
  258. if (isset($setMaxSignups))
  259. {
  260. if ($setMaxSignups == "Update")
  261. {
  262. if ($iMaxSignups < 0 || $iMaxSignups > 1000)
  263. {
  264. echo "invalid maxentries range, please pick something between 0 and 1000...<br>\n";
  265. exit;
  266. }
  267. db_query ("update pbs_config set Value = $iMaxSignups where Label = 'MaxSignups'");
  268. if (mysql_error()) echo mysql_error();
  269. else header ("Location: bracket_admin.php?ViewMode=Signups");
  270. }
  271. }
  272. if (isset ($seedAction))
  273. {
  274. switch ($seedAction)
  275. {
  276. case "Build List":
  277. {
  278. $rawPlayerNames = trim ($rawPlayerNames);
  279. $aRawPlayers = split ("\n", $rawPlayerNames);
  280. $filter = "/\d*\.?\s*(.+)/";
  281. if (strstr ($aRawPlayers[0], "from mysql")) {
  282. array_shift ($aRawPlayers);
  283. //
  284. $filter = "/[\W\s+\d+\s+]*\W\s+(.+)\s+\W/";
  285. }
  286. $nNumPlayers = sizeof ($aRawPlayers);
  287. /*
  288. // build seeds list
  289. $aSeeds = buildSeedList ($nNumPlayers);
  290. // build bracket to player link
  291. for ($i = 0; $i < $nNumPlayers; $i ++)
  292. {
  293. $nID = $i * 2 + 1;
  294. $nSeededID = $aSeeds[$i];
  295. //db_query ("insert into pbs_bracket (ID, PlayerID, Timestamp) values ($nID, $nSeededID, Timestamp)");
  296. db_query ("update pbs_bracket set PlayerID = $nSeededID, Timestamp = Timestamp where ID = $nID");
  297. }
  298. */
  299. // build player list that bracket refers to
  300. $nPlayerID = 0;
  301. foreach ($aRawPlayers as $sRawPlayer)
  302. {
  303. preg_match ($filter, $sRawPlayer, $aMatch);
  304. if (!isset ($aMatch[1])){
  305. echo "invalid data supplied, filters unable to process it, exiting.<br>";
  306. exit;
  307. }
  308. $newPlayer = trim ($aMatch[1]);
  309. $nPlayerID ++;
  310. db_query ("update pbs_players set Nick = '$newPlayer' where ID = $nPlayerID");
  311. //echo "Nick = '$newPlayer' ID = $nPlayerID<br>\n";
  312. }
  313. header ("Location: bracket_admin.php");
  314. } break;
  315. case "Update":
  316. {
  317. for ($i = 1; $i <= $nPlayers; $i ++)
  318. {
  319. $sNewPlayer = safeString (${"sPlayer_$i"});
  320. db_query ("update pbs_players set Nick = '$sNewPlayer' where ID = $i");
  321. }
  322. //db_query ("truncate pbs_players");
  323. //db_query ($query);
  324. header ("Location: bracket_admin.php");
  325. } break;
  326. default:
  327. echo "warning: switch($seedAction) default case.<br>\n";
  328. }
  329. }
  330. if (isset ($detailAction))
  331. {
  332. $location = "bracket_referee.php";
  333. if ($_SESSION["bIsAdmin"] == 'Y')
  334. $location = "bracket_admin.php";
  335. switch ($detailAction)
  336. {
  337. case "Set Detail":
  338. {
  339. for ($i = 1; $i <= $nMPG; $i ++)
  340. {
  341. $nWScore = ${"nWScore_$i"};
  342. $nLScore = ${"nLScore_$i"};
  343. $nID = ${"nRoundID_$i"};
  344. $nMapID = ${"nMap_$i"};
  345. db_query ("update pbs_rounds set WinnerScore = $nWScore, LoserScore = $nLScore, MapID = $nMapID, SequenceNum = $i where ID = $nID");
  346. //checkSqlErrors (__LINE__);
  347. if (mysql_error()) echo mysql_error();
  348. }
  349. header ("Location: $location");
  350. } break;
  351. case "Set Date":
  352. {
  353. //echo "nSpotID = $nSpotID<br>";
  354. $extra = (isset ($iReferee)) ? " RefID = $iReferee," : "";
  355. $query = "update pbs_bracket set Timestamp = '$dateString',$extra Opponent1 = $iOpponent1, Opponent2 = $iOpponent2 where ID = $nSpotID";
  356. db_query ($query);
  357. if (mysql_error()) echo mysql_error();
  358. else header ("Location: $location");
  359. } break;
  360. case "Clear":
  361. {
  362. $query = "update pbs_bracket set Timestamp = 0, RefID = 0 where ID = $nSpotID";
  363. db_query ($query);
  364. if (mysql_error()) echo mysql_error();
  365. else header ("Location: $location");
  366. }
  367. case "Cancel":
  368. {
  369. header ("Location: $location");
  370. } break;
  371. default:
  372. echo "warning: switch($detailAction) default case.<br>\n";
  373. }
  374. }
  375. function saveConfig($br_config)
  376. {
  377. $fconfig = @fopen("bracket_cfg.xml", "wb"); // prevents \r\n translations and shit
  378. if ($fconfig) {
  379. fwrite($fconfig, $br_config, strlen($br_config)); // specifying size bypasses magic quotes
  380. fclose($fconfig);
  381. chmod("bracket_cfg.xml", 0666);
  382. } else
  383. {
  384. die("Could not write config to bracket_cfg.xml<br>Check file permissions. Install aborted cleanly.");
  385. }
  386. }
  387. if (isset ($Action))
  388. {
  389. switch ($Action)
  390. {
  391. case "Set Names":
  392. {
  393. //decho ("switch() set names case.");
  394. $nPlayerID = 0;
  395. for ($i = 1; $i <= $nSEPlayers; $i ++)
  396. {
  397. $nPlayerID ++;
  398. if (isset (${"sNames_$i"}))
  399. {
  400. $Nick = ${"sNames_$i"};
  401. db_query ("update pbs_players set Nick = '$Nick' where ID = $nPlayerID");
  402. }
  403. }
  404. header ("Location: bracket_admin.php");
  405. } break;
  406. case "Set Standings":
  407. {
  408. $editSID = 0;
  409. $changes = 0;
  410. $lastsid = 0;
  411. //decho ("switch() set names case.");
  412. $newStandings = split (",", $WBStandingString);
  413. //echo "<pre>";
  414. //print_r ($newStandings);
  415. if (strlen ($WBStandingString))
  416. //for ($i = 0; $i < sizeof ($newStandings); $i ++)
  417. foreach ($newStandings as $newStanding)
  418. {
  419. // break down winner/loser standing ids
  420. list ($nW_SID, $nL_SID) = split ("/", $newStanding);
  421. // if we have a set winner position id
  422. if (!${"sWBracket_".$nW_SID}) continue;
  423. list ($nW_PID, $nL_PID) = split ("/", ${"sWBracket_" . $nW_SID});
  424. // if we have a set loser position id
  425. if ($nL_SID)
  426. { // have loser bracket position to insert to
  427. //echo "tossing player $nL_PID into loser bracket on spot $nL_SID<br>\n";
  428. db_query ("update pbs_bracket set PlayerID = $nL_PID, Timestamp = Timestamp where ID = $nL_SID");
  429. checkSqlErrors(__LINE__);
  430. }
  431. // each match has nMPG rounds/maps in it (for ch3 there will be 3 maps per match)
  432. for ($i = 1; $i <= $nMPG; $i ++)
  433. db_query ("insert into pbs_rounds (BracketID, DropInID, WinnerPID, LoserPID, SequenceNum) "
  434. ."values ($nW_SID, $nL_SID, $nW_PID, $nL_PID, $i)");
  435. //echo mysql_error();
  436. //echo "new standing $nW_PID = " . ${"sWBracket_" . $nW_SID} . "<br>\n";
  437. db_query ("update pbs_bracket set PlayerID = $nW_PID, Timestamp = Timestamp where ID = $nW_SID");
  438. if (mysql_error()) echo mysql_error();
  439. unset (${"sWBracket_".$nW_SID});
  440. $changes ++;
  441. $editSID = $nW_SID;
  442. }
  443. $newStandings = split (",", $LBStandingString);
  444. //foreach ($newStandings as $nSID)
  445. if (strlen ($LBStandingString))
  446. //for ($i = 0; $i < sizeof ($newStandings); $i ++)
  447. foreach ($newStandings as $newStanding)
  448. {
  449. // break down winner/loser standing ids
  450. $nW_SID = $newStanding;
  451. // if we have a set winner position id
  452. //echo "handling sLBracket_$nW_SID..<br>";
  453. if (!$nW_SID) continue;
  454. if (!${"sLBracket_" . $nW_SID}) continue;
  455. list ($nW_PID, $nL_PID) = split ("/", ${"sLBracket_" . $nW_SID});
  456. //echo "nW_SID = $nW_SID<br>";
  457. //echo "nW_PID = $nW_PID<br>";
  458. //echo "nL_PID = $nL_PID<br>";
  459. //$nL_PID = ${"sLBracket_" . $nL_SID};
  460. // each match has nMPG rounds/maps in it (for ch3 there will be 3 maps per match)
  461. for ($i = 1; $i <= $nMPG; $i ++)
  462. db_query ("insert into pbs_rounds (BracketID, DropInID, WinnerPID, LoserPID, SequenceNum) "
  463. ."values ($nW_SID, 0, $nW_PID, $nL_PID, $i)");
  464. db_query ("update pbs_bracket set PlayerID = $nW_PID, Timestamp = Timestamp where ID = $nW_SID");
  465. if (mysql_error()) echo mysql_error();
  466. $changes ++;
  467. $editSID = $nW_SID;
  468. }
  469. if ($changes == 1 && $editSID)
  470. { // we only set 1 result... so why not go directly to scores editor?
  471. header( "Location: bracket_admin.php?editSID=$editSID" );
  472. } else
  473. header ("Location: bracket_admin.php");
  474. exit;
  475. } break;
  476. case "Rename":
  477. {
  478. // save $tourneyName only
  479. $gm = getGameMode();
  480. $br_config = <<<XML
  481. <?xml version='1.0' encoding="ISO-8859-1"?>
  482. <config>
  483. <tourney>$tourneyName</tourney>
  484. <game>$gm</game>
  485. </config>
  486. XML;
  487. saveConfig($br_config);
  488. } break;
  489. case "Build Bracket":
  490. {
  491. if( strlen($gameMode)<2 ) die( "You must specify a game mode for tourney bracket" );
  492. if( $nSEPlayers % 2 ) die( "You must specify a 2^x number of players for winner's bracket" );
  493. if( $nDEPlayers % 2 ) die( "You must specify a 2^x number of players for loser's bracket" );
  494. if( strlen($gameMode)>4 ) die( "The maximum length of gamo mode name is 4" );
  495. if( $nSEPlayers > 128 ) die("The maximum number of players the winner's bracket may have is 128" );
  496. if( $nDEPlayers > 64 ) die("The maximum number of players the loser's bracket may have is 64" );
  497. if( $nDEPlayers >= $nSEPlayers ) die( "The maximum size of the loser's bracket has to be 1/2 of the winner's bracket" );
  498. if( $nMPG < 1 || $nMPG>10 ) die( "Wrong number maps per game" );
  499. //decho ("switch() build bracket case.");
  500. db_query ("truncate pbs_players");
  501. db_query ("truncate pbs_bracket");
  502. db_query ("truncate pbs_rounds");
  503. db_query ("truncate pbs_comments");
  504. // save $gameMode $tourneyName
  505. $br_config = <<<XML
  506. <?xml version='1.0' encoding="ISO-8859-1"?>
  507. <config>
  508. <tourney>$tourneyName</tourney>
  509. <game>$gameMode</game>
  510. </config>
  511. XML;
  512. saveConfig($br_config);
  513. $nDERows = log10 ($nDEPlayers) / log10(2) * 4 + 1;
  514. $nSERows = log10 ($nSEPlayers) / log10(2) * 2 + 1;
  515. /*
  516. pbs_bracket size for loser bracket sizes:
  517. 2 - 5
  518. 4 - 13
  519. 8 - 29
  520. 16 - 61
  521. 32 - 125
  522. 64 - 253
  523. 128 - 509
  524. f(x) = (5 * 2 + 3)
  525. n(x) = log(x)/log(2) * 2 + 1)
  526. pbs_bracket size for winner bracket sizes:
  527. 2 - 4
  528. 4 - 8
  529. 8 - 16
  530. 16 - 32
  531. 32 - 64
  532. 64 - 128
  533. 128 - 256
  534. */
  535. // number of rows required in pbs_bracket for each table
  536. $numWB = $nSEPlayers * 2;
  537. $numLB = getLBSize($nDEPlayers);
  538. if ($numLB) $numLB += 1; // 1 more for final round
  539. $numRows = $numWB + $numLB;
  540. // proper filler :)
  541. for ($i = 1; $i <= $numRows; $i ++)
  542. db_query ("insert into pbs_bracket (ID, PlayerID, Timestamp) values ($i, 0, 0)");
  543. // player list
  544. for ($i = 1; $i <= $nSEPlayers; $i ++)
  545. db_query ("insert into pbs_players (ID, Nick) values ($i, '-TBA-')");
  546. //echo "inserted player names into player list.<br>";
  547. db_query ("update pbs_config set Value = '$nSEPlayers' where Label = 'SEPlayers'");
  548. db_query ("update pbs_config set Value = '$nDEPlayers' where Label = 'DEPlayers'");
  549. db_query ("update pbs_config set Value = '$nMPG' where Label = 'MPG'");
  550. require_once ("bracket_link.php");
  551. $aSeeds = buildSeedList ($nSEPlayers);
  552. for ($i = 0; $i < $nSEPlayers; $i ++)
  553. {
  554. $nID = $i * 2 + 1;
  555. $nSeededID = $aSeeds[$i];
  556. db_query ("update pbs_bracket set PlayerID = $nSeededID, Timestamp = Timestamp where ID = $nID");
  557. }
  558. //echo "inserted player links into main bracket.<br>";
  559. header ("Location: bracket_admin.php?ViewMode=Seeder");
  560. } break;
  561. case "Resize":
  562. {
  563. if( strlen($gameMode)<2 ) die( "You must specify a game mode for tourney bracket" );
  564. if( strlen($gameMode)>4 ) die( "The maximum length of gamo mode name is 4" );
  565. // save $gameMode $tourneyName
  566. $br_config = <<<XML
  567. <?xml version='1.0' encoding="ISO-8859-1"?>
  568. <config>
  569. <tourney>$tourneyName</tourney>
  570. <game>$gameMode</game>
  571. </config>
  572. XML;
  573. saveConfig($br_config);
  574. // dont take nseplayers from the form for resize... simple mistake, bad consequences!
  575. $nSEPlayers = mysql_result( db_query("select Value from pbs_config where Label = 'SEPlayers'"), 0 );
  576. $numWB = $nSEPlayers * 2;
  577. $numLB = getLBSize($nDEPlayers);
  578. if ($numLB) $numLB += 1; // 1 more for final round
  579. $numRows = $numWB + $numLB;
  580. // erase loser bracket to shrink table
  581. db_query ("delete from pbs_bracket where ID > $numWB");
  582. db_query ("delete from pbs_comments where BracketID > $numWB");
  583. // proper loser bracket filler, thanks to jwalk for findin the resize bug!
  584. for ($i = $numWB + 1; $i <= $numRows; $i ++)
  585. db_query ("insert into pbs_bracket (ID, PlayerID, Timestamp) values ($i, 0, 0)");
  586. db_query ("update pbs_config set Value = '$nDEPlayers' where Label = 'DEPlayers'");
  587. db_query ("update pbs_config set Value = '$nMPG' where Label = 'MPG'");
  588. require_once ("bracket_link.php");
  589. header ("Location: bracket_admin.php");
  590. } break;
  591. default:
  592. echo "warning: switch($Action) default case.<br>\n";
  593. }
  594. }
  595. if (isset ($mapAction))
  596. {
  597. switch ($mapAction)
  598. {
  599. case "Add Map":
  600. {
  601. if (!isset ($iMapName) || !isset ($iMapImage)) {
  602. echo "mandatory fields: mapname and mapimage.<br>\n";
  603. exit;
  604. }
  605. if (!isset ($iDescription)) $iDescription = "No Description";
  606. if (!isset ($iMapURL)) $iMapURL = "";
  607. $iDescription = safeString (safeNL2Br($iDescription));
  608. $iMapURL = safeString ($iMapURL);
  609. $iMapName = safeString ($iMapName);
  610. $query = "insert into pbs_mappool (MapName, MapImage, URL, Description) values "
  611. ."('$iMapName', '$iMapImage', '$iMapURL', '$iDescription')";
  612. db_query ($query);
  613. if (mysql_error()) echo mysql_error();
  614. else header ("Location: bracket_admin.php?ViewMode=MapPool");
  615. } break;
  616. case "Update Map":
  617. {
  618. if (!isset ($iMapName) || !isset ($iMapImage)) {
  619. echo "mandatory fields: mapname and mapimage.<br>\n";
  620. exit;
  621. }
  622. if (!isset ($iMapID)) {
  623. echo "MapID unspecified: missing hidden input element in Map Edit form?<br>\n";
  624. exit;
  625. }
  626. if (!isset ($iDescription) || strlen ($iDescription) < 2) $iDescription = "No Description";
  627. if (!isset ($iMapURL) || strlen ($iMapURL) < 2) $iMapURL = "";
  628. $iDescription = safeString (safeNL2Br ($iDescription));
  629. $iMapName = safeString ($iMapName);
  630. $iMapURL = safeString ($iMapURL);
  631. $query = "update pbs_mappool set MapName = '$iMapName', MapImage = '$iMapImage', "
  632. ."URL = '$iMapURL', Description = '$iDescription' where ID = $iMapID";
  633. db_query ($query);
  634. if (mysql_error()) echo mysql_error();
  635. else header ("Location: bracket_admin.php?ViewMode=MapPool");
  636. } break;
  637. default:
  638. echo "warning: switch($mapAction) default case.<br>\n";
  639. }
  640. }
  641. if (isset ($doTeam))
  642. {
  643. if ($doTeam == "Submit")
  644. {
  645. $returnMode = "Teams";
  646. if (isset($iTeamID))
  647. {
  648. db_query ("update pbs_signup set SeededNum = 0 where SeededNum = $iTeamID");
  649. }
  650. $iTeamData = safeNL2Br ( htmlentities ( trim($iTeamData) ) );
  651. $iTeamName = safeString ($iTeamName);
  652. $iTeamLocation = safeString ($iTeamLocation);
  653. $arrTeamData = split("<br>", $iTeamData);
  654. $numErrors = 0;
  655. db_query ("update pbs_players set Nick = '$iTeamName', Location = '$iTeamLocation' where ID = $iTeamID");
  656. if (mysql_error()) { echo "error updating team name: " . mysql_error() . "<br>\n"; $numErrors ++; exit; }
  657. db_query ("delete from pbs_teamdata where TeamID = $iTeamID");
  658. if (strlen($arrTeamData[0]))
  659. foreach ($arrTeamData as $Player)
  660. {
  661. $Captain = 'N';
  662. if (strstr ($Player, "+captain"))
  663. $Captain = 'Y';
  664. $Player = array_shift( explode("+captain", $Player) );
  665. //$arrPlayer = explode("+captain", $Player);
  666. //$Player = $arrPlayer[0];
  667. //if (strlen ($Player) < 2) continue;
  668. $Player = safeString ($Player);
  669. db_query ("insert into pbs_teamdata (TeamID, Captain, Name) values ($iTeamID, '$Captain', '$Player')");
  670. if (mysql_error()) { echo "error inserting player name: " . mysql_error() . "<br>\n"; $numErrors++; exit; }
  671. }
  672. if (isset ($iSignupID))
  673. {
  674. db_query ("update pbs_signup set SeededNum = $iTeamID where ID = $iSignupID");
  675. if (mysql_error()) { echo "error seeting signup seednum:" . mysql_error() . "<br>\n"; $numErrors++; exit; }
  676. $returnMode = "Signups";
  677. }
  678. if ($numErrors == 0)
  679. header ("Location: bracket_admin.php?ViewMode=$returnMode");
  680. else
  681. echo "Errors Occured :(<br>\n";
  682. } else
  683. if ($doTeam == "Delete")
  684. {
  685. db_query ("delete from pbs_teamdata where TeamID = $iTeamID");
  686. header ("Location: bracket_admin.php?ViewMode=Teams");
  687. } else
  688. if ($doTeam == "Cancel")
  689. {
  690. header ("Location: bracket_admin.php?ViewMode=Teams");
  691. } else
  692. if ($doTeam == "Swap")
  693. { // to be honest, i find the following disgusting and disgraceful, but i wanna get this ready for yrim asap!
  694. $rTeamname = db_query ("select Nick, Location from pbs_players where ID = $iTeamID");
  695. if (mysql_error()) { showHint ("Error In doTeam=Swap Step 1a", mysql_error()); exit; }
  696. $team1 = mysql_fetch_assoc ($rTeamname);
  697. $rTeamname = db_query ("select Nick, Location from pbs_players where ID = $iSeedNum");
  698. if (mysql_error()) { showHint ("Error In doTeam=Swap Step 1b", mysql_error()); exit; }
  699. $team2 = mysql_fetch_assoc ($rTeamname);
  700. db_query ("update pbs_players set Nick = '$team2[Nick]', Location = '$team2[Location]' where ID = $iTeamID");
  701. if (mysql_error()) { showHint ("Error In doTeam=Swap Step 2a", mysql_error()); exit; }
  702. db_query ("update pbs_players set Nick = '$team1[Nick]', Location = '$team1[Location]' where ID = $iSeedNum");
  703. if (mysql_error()) { showHint ("Error In doTeam=Swap Step 2b", mysql_error()); exit; }
  704. db_query ("update pbs_signup set SeededNum = -1 where SeededNum = $iSeedNum");
  705. if (mysql_error()) { showHint ("Error In doTeam=Swap Step 3a", mysql_error()); exit; }
  706. db_query ("update pbs_signup set SeededNum = $iSeedNum where SeededNum = $iTeamID");
  707. if (mysql_error()) { showHint ("Error In doTeam=Swap Step 3b", mysql_error()); exit; }
  708. db_query ("update pbs_signup set SeededNum = $iTeamID where SeededNum = -1");
  709. if (mysql_error()) { showHint ("Error In doTeam=Swap Step 3c", mysql_error()); exit; }
  710. db_query ("update pbs_teamdata set TeamID = -1 where TeamID = $iTeamID");
  711. if (mysql_error()) { showHint ("Error In doTeam=Swap Step 4a", mysql_error()); exit; }
  712. db_query ("update pbs_teamdata set TeamID = $iTeamID where TeamID = $iSeedNum");
  713. if (mysql_error()) { showHint ("Error In doTeam=Swap Step 4b", mysql_error()); exit; }
  714. db_query ("update pbs_teamdata set TeamID = $iSeedNum where TeamID = -1");
  715. if (mysql_error()) { showHint ("Error In doTeam=Swap Step 4c", mysql_error()); exit; }
  716. header ("Location: bracket_admin.php?ViewMode=Signups");
  717. } else
  718. echo "lost in switch() (doTeam = $doTeam) call putty for help :/<br>\n";
  719. }
  720. if( isset( $setRules ) )
  721. {
  722. $Rules = safeString( safeNL2Br( $Rules ) );
  723. $Author = safeString( $Author );
  724. db_query( "delete from pbs_textdata where TextType = 'Rules'" );
  725. db_query( "insert pbs_textdata set TextType = 'Rules', Author = '$Author', Body = '$Rules'" );
  726. header ("Location: bracket_admin.php?ViewMode=Rules");
  727. }
  728. if( isset( $setNews ) )
  729. {
  730. $News = safeString( safeNL2Br( $News ) );
  731. $Title = safeString( $Title );
  732. $Author = safeString( $Author );
  733. if( isset( $newsAction ) )
  734. {
  735. if( $newsAction == "Close" )
  736. {
  737. header( "Location: bracket_admin.php?ViewMode=News" );
  738. exit;
  739. } elseif( $newsAction == "Delete" )
  740. {
  741. db_query( "delete from pbs_textdata where ID = $NewsId" );
  742. header( "Location: bracket_admin.php?ViewMode=News" );
  743. exit;
  744. }
  745. }
  746. $query = "pbs_textdata set Title = '$Title', Author = '$Author', Body = '$News'";
  747. if( $NewsId ) {
  748. db_query( "update $query where ID = $NewsId" );
  749. } else {
  750. db_query( "insert $query, TextType = 'News', Created = now()" );
  751. $NewsId = mysql_insert_id();
  752. }
  753. header( "Location: bracket_admin.php?ViewMode=News&NewsId=$NewsId" );
  754. }
  755. ?>