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

/solar27/admin.php

https://bitbucket.org/sebs/mosolar
PHP | 655 lines | 481 code | 129 blank | 45 comment | 96 complexity | cf6b7b5efad59a3de3ab5956e2c32a98 MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-3.0, BSD-3-Clause, LGPL-2.0, MIT, GPL-2.0
  1. <?php
  2. // Solar Imperium is licensed under GPL2, Check LICENSE.TXT for mode details //
  3. define("LANGUAGE_DOMAIN","system");
  4. require_once ("include/init.php");
  5. // check if the player is logged
  6. if (!isset ($_SESSION["player"])) {
  7. $DB->CompleteTrans();
  8. die(header("Location: welcome.php"));
  9. }
  10. // check if the player is admin
  11. if ($_SESSION["player"]["admin"] != 1) {
  12. $DB->CompleteTrans();
  13. die(T_("You need to be an admin!"));
  14. }
  15. // *********************************************************************************
  16. // Delete empire callback
  17. // *********************************************************************************
  18. if (isset($_GET["DELETE_EMPIRE"])) {
  19. // do nothing for now
  20. }
  21. // *********************************************************************************
  22. // Post message callback
  23. // *********************************************************************************
  24. if (isset($_GET["POSTMSG"])) {
  25. $message = $_POST["message"];
  26. $message = str_replace("<","(",$message);
  27. $message = str_replace(">",")",$message);
  28. if ($message != "") {
  29. $players = $DB->Execute("SELECT * FROM system_tb_players");
  30. while(!$players->EOF) {
  31. $DB->Execute("INSERT INTO system_tb_messages (player_id,date,message) VALUES(".$players->fields["id"].",".time().",'".utf8_encode(addslashes($message))."')");
  32. $players->MoveNext();
  33. }
  34. }
  35. $DB->CompleteTrans();
  36. die(header("Location: admin.php"));
  37. }
  38. // *********************************************************************************
  39. // Update game description callback
  40. // *********************************************************************************
  41. if (isset($_GET["UPDATE_DESCRIPTION"])) {
  42. $game_id = intval($_GET["UPDATE_DESCRIPTION"]);
  43. $description = "";
  44. if (isset($_POST["description"]))
  45. $description = (addslashes($_POST["description"]));
  46. $DB->Execute("UPDATE system_tb_games SET description='$description' WHERE id='$game_id'");
  47. $DB->CompleteTrans();
  48. die(header("Location: admin.php"));
  49. }
  50. // *********************************************************************************
  51. // Reset rules callback
  52. // *********************************************************************************
  53. if (isset ($_GET["RESETRULES"])) {
  54. $game_id = intval($_GET["RESETRULES"]);
  55. copy("include/game/rules_orig.php","include/game/games_rules/" . $game_id . ".php");
  56. $DB->CompleteTrans();
  57. die(header("Location: admin.php"));
  58. }
  59. // *********************************************************************************
  60. // Update rules callback
  61. // *********************************************************************************
  62. if (isset ($_GET["UPDATERULES"])) {
  63. $fd = fopen("include/game/games_rules/".intval($_GET["UPDATERULES"]).".php","w");
  64. $filedata = stripslashes($_POST["filedata"]);
  65. $filedata = str_replace("_?php","<?php",$filedata);
  66. if (strpos($filedata,"<?php") === false) {
  67. die(T_("Invalid rules sent."));
  68. } else {
  69. $filedata = substr($filedata,strpos($filedata,"<?php"));
  70. if (strpos($filedata,"?>") === false) {
  71. die(T_("Invalid rules sent."));
  72. } else {
  73. $filedata = substr($filedata,0,strpos($filedata,"?>")+2);
  74. }
  75. }
  76. fwrite($fd,stripslashes($filedata));
  77. fclose($fd);
  78. $DB->CompleteTrans();
  79. die(header("Location: admin.php"));
  80. }
  81. // *********************************************************************************
  82. // Edit rules callback
  83. // *********************************************************************************
  84. if (isset ($_GET["EDITRULES"])) {
  85. $game_id = intval($_GET["EDITRULES"]);
  86. $filename = "include/game/games_rules/".$game_id.".php";
  87. $fd = fopen($filename,"r");
  88. $fsize = filesize($filename);
  89. $filedata = "";
  90. if ($fsize != 0)
  91. $filedata = fread($fd,$fsize);
  92. fclose($fd);
  93. $TPL->assign("game_id",$game_id);
  94. $TPL->assign("file_content",$filedata);
  95. $TPL->display("page_admin_editrules.html");
  96. $DB->CompleteTrans();
  97. die();
  98. }
  99. // *********************************************************************************
  100. // Delete game callback
  101. // *********************************************************************************
  102. if (isset ($_GET["ADDAI"])) {
  103. $game_id = intval($_GET["ADDAI"]);
  104. $ai_level = intval($_POST["ai_level"]);
  105. // Pre checks
  106. $rs = $DB->Execute("SELECT * FROM system_tb_games WHERE id='$game_id'");
  107. if ($rs->EOF) trigger_error($DB->ErrorMsg());
  108. $game_data = $rs->fields;
  109. $rs = $DB->Execute("SELECT COUNT(*) FROM game".$game_id."_tb_empire");
  110. if ($rs->fields[0] >= $game_data["max_players"]) {
  111. $DB->CompleteTrans();
  112. die(T_("Cannot add computer component, max players reached!"));
  113. }
  114. $rs = $DB->Execute("SELECT * FROM game".$game_id."_tb_coordinator");
  115. if ($rs->EOF) {
  116. $DB->CompleteTrans();
  117. die(T_("Game not resetted yet!"));
  118. }
  119. // Create a new empire!
  120. $empire_rand1 = Array(
  121. 'Corporate','Master','Space',
  122. 'Solar','Ralos','Blorgz','Heavy',
  123. 'Hyperdrive','USR','Rogue','Death',
  124. 'Star','Galactic','Cyber','Peaceful',
  125. 'Power','Kickass','Elite','Evil'
  126. );
  127. $empire_rand2 = Array(
  128. 'Muirepmi','Imperium','Corporation','Associates',
  129. 'Industries','Robotics','Nation','Squadron',
  130. 'Destroyers','Hyperion','Factories','Dominion'
  131. );
  132. $emperor_rand1 = Array(
  133. 'Nafarious','Necro','Infamous','Illarious',
  134. 'Mad','Bloody','Imperial','Goth','Chief',
  135. 'Undead','Star','Evil','Good','Nasty',
  136. 'Marvellous','Lord','Solar'
  137. );
  138. $emperor_rand2 = Array(
  139. 'Leader','Warrrior','Vampire',
  140. 'PlanetBuster','Monster','JailKeeper','Jack',
  141. 'Cleon I','Bevatron','Lord','Gurney','Jackal',
  142. 'Destroyer','Master','Chief'
  143. );
  144. $empire_name = "";
  145. $emperor_name = "";
  146. $count = 0;
  147. while(true) {
  148. $empire_name = $empire_rand1[rand(0,count($empire_rand1)-1)];
  149. $empire_name .= " ".$empire_rand2[rand(0,count($empire_rand2)-1)];
  150. $emperor_name = $emperor_rand1[rand(0,count($emperor_rand1)-1)];
  151. $emperor_name .= " ".$emperor_rand2[rand(0,count($emperor_rand2)-1)];
  152. $rs = $DB->Execute("SELECT * FROM game".$game_id."_tb_empire WHERE emperor='".addslashes($emperor_name)."' OR name='".addslashes($empire_name)."'");
  153. if ($rs->EOF) break;
  154. if ($count++ == 1000) {
  155. die(T_("Fatal error while creating new empire!"));
  156. }
  157. }
  158. $x = 0;
  159. $y = 0;
  160. do {
  161. $x = -1000+(rand(0,40) * 50);
  162. $y = -1000+(rand(0,40) * 50);
  163. $rs = $DB->Execute("SELECT * FROM game".$game_id."_tb_empire WHERE (x>=".($x-50)." AND x<=".($x+50).") AND (y>=".($y-50)." AND y<=".($y+50).") AND active < 2");
  164. } while(!$rs->EOF);
  165. $default_logo = $default_logo[rand(0,count($default_logo)-1)];
  166. $premium = 0;
  167. $gender = (rand(0,1)==0?"M":"F");
  168. $autobio = T_("Resistance is futile!");
  169. // 4 insert data in dabase
  170. $query = "INSERT INTO game".$game_id."_tb_empire (player_id,ai_level,
  171. emperor,
  172. name,
  173. gender,
  174. logo,
  175. biography,
  176. active,
  177. date,
  178. last_turn_date,
  179. turns_left,
  180. protection_turns_left,
  181. credits,
  182. last_credits,
  183. population,
  184. food,
  185. x,y,premium,food_rate,ore_rate,petroleum_rate)
  186. VALUES(-1,".$ai_level.",
  187. '".$emperor_name."',
  188. '".$empire_name."',
  189. '".$gender."',
  190. '$default_logo',
  191. '".$autobio."',
  192. 1,
  193. ".time(NULL).",
  194. ".time(NULL).",
  195. ".($game_data["turns_per_day"]*4).",
  196. ".$game_data["protection_turns"].",
  197. ".CONF_START_CREDITS.",
  198. ".CONF_START_CREDITS.",
  199. ".CONF_START_POPULATION.",
  200. ".CONF_START_FOOD.",$x,$y,$premium,".CONF_DEFAULT_AUTOSELL_RATE.",".CONF_DEFAULT_AUTOSELL_RATE.",".CONF_DEFAULT_AUTOSELL_RATE."
  201. );";
  202. $DB->Execute($query);
  203. if (!$DB) trigger_error($DB->ErrorMsg());
  204. $id = $DB->Insert_ID();
  205. $query = "INSERT INTO game".$game_id."_tb_production (empire) values($id)";
  206. $DB->Execute($query);
  207. $query = "INSERT INTO game".$game_id."_tb_supply (empire, rate_soldier, rate_fighter, rate_station, rate_heavycruiser, rate_carrier, rate_covert, rate_credits) values($id,15,15,15,15,10,20,10);";
  208. $DB->Execute($query);
  209. $query = "INSERT INTO game".$game_id."_tb_planets (
  210. empire,
  211. food_planets,
  212. ore_planets,
  213. tourism_planets,
  214. supply_planets,
  215. gov_planets,
  216. edu_planets,
  217. research_planets,
  218. urban_planets,
  219. petro_planets,
  220. antipollu_planets)
  221. VALUES(
  222. $id,
  223. ".(CONF_START_FOOD_PLANETS * $ai_level).",
  224. ".(CONF_START_ORE_PLANETS * $ai_level).",
  225. ".(CONF_START_TOURISM_PLANETS * $ai_level).",
  226. ".(CONF_START_SUPPLY_PLANETS * $ai_level).",
  227. ".(CONF_START_GOV_PLANETS * $ai_level).",
  228. ".(CONF_START_EDU_PLANETS * $ai_level).",
  229. ".(CONF_START_RESEARCH_PLANETS * $ai_level).",
  230. ".(CONF_START_URBAN_PLANETS * $ai_level).",
  231. ".(CONF_START_PETRO_PLANETS * $ai_level).",
  232. ".(CONF_START_ANTIPOLLU_PLANETS * $ai_level)."
  233. );";
  234. $DB->Execute($query);
  235. $query = "INSERT INTO game".$game_id."_tb_army (empire,soldiers,fighters,stations)
  236. VALUES($id,".(CONF_START_SOLDIERS * $ai_level).",".(CONF_START_FIGHTERS * $ai_level).",".(CONF_START_STATIONS * $ai_level).");";
  237. $DB->Execute($query);
  238. $evt_type = CONF_EVENT_NEWEMPIRE;
  239. $evt_from = $id;
  240. $evt_params = array("empire_emperor"=>$emperor_name,"empire_name"=>$empire_name,"gender"=>$gender);
  241. $evt_sticky = 0;
  242. $evt_seen = 0;
  243. $evt_height = 160;
  244. $query = "SELECT * FROM game".$game_id."_tb_empire WHERE active=1";
  245. $recipients = $DB->Execute($query);
  246. while(!$recipients->EOF)
  247. {
  248. $query = "INSERT INTO game".$game_id."_tb_event (event_type,event_from,event_to,params,seen,sticky,date,height) ".
  249. "VALUES(".$evt_type.",".$evt_from.",".$recipients->fields["id"].",'".addslashes(serialize($evt_params))."',".$evt_seen.",".$evt_sticky.",".time(NULL).",".$evt_height.")";
  250. if (!$DB->Execute($query)) trigger_error($DB->ErrorMsg());
  251. $recipients->MoveNext();
  252. }
  253. // garbage collection
  254. $timeout_unseen = time(NULL) - CONF_UNSEEN_EVENT_TIMEOUT;
  255. $timeout_seen = time(NULL) - CONF_SEEN_EVENT_TIMEOUT;
  256. if (!$DB->Execute("DELETE FROM game".$game_id."_tb_event WHERE date < $timeout_unseen AND seen=0")) trigger_error($this->DB->ErrorMsg());
  257. if (!$DB->Execute("DELETE FROM game".$game_id."_tb_event WHERE date < $timeout_seen AND seen=1")) trigger_error($this->DB->ErrorMsg());
  258. $DB->CompleteTrans();
  259. die(header("Location: admin.php"));
  260. }
  261. // *********************************************************************************
  262. // Delete game callback
  263. // *********************************************************************************
  264. if (isset ($_GET["DELETEGAME"])) {
  265. $game_id = intval($_GET["DELETEGAME"]);
  266. $DB->Execute("DELETE FROM system_tb_games WHERE id='$game_id'");
  267. if (!$DB) trigger_error($DB->ErrorMsg());
  268. $rs2 = $DB->Execute("SHOW TABLES LIKE 'game".$game_id."_%'");
  269. if (!$rs2) trigger_error($DB->ErrorMsg());
  270. while(!$rs2->EOF)
  271. {
  272. $DB->Execute("DROP TABLE ".$rs2->fields[0]);
  273. $rs2->MoveNext();
  274. }
  275. if (file_exists("include/game/games_config/" . $game_id . ".php")) unlink("include/game/games_config/" . $game_id . ".php");
  276. if (file_exists("include/game/games_rules/" . $game_id . ".php")) unlink("include/game/games_rules/" . $game_id . ".php");
  277. $DB->CompleteTrans();
  278. die(header("Location: admin.php"));
  279. }
  280. // *********************************************************************************
  281. // Reset game callback
  282. // *********************************************************************************
  283. if (isset ($_GET["RESETGAME"])) {
  284. $game_id = intval($_GET["RESETGAME"]);
  285. $players = $DB->Execute("SELECT id FROM game".$game_id."_tb_empire");
  286. while (!$players->EOF) {
  287. $DB->Execute("DELETE FROM game".$game_id."_tb_army WHERE empire='" . $players->fields["id"]."'");
  288. if (!$DB) trigger_error($DB->ErrorMsg());
  289. $DB->Execute("DELETE FROM game".$game_id."_tb_planets WHERE empire='" . $players->fields["id"]."'");
  290. if (!$DB) trigger_error($DB->ErrorMsg());
  291. $DB->Execute("DELETE FROM game".$game_id."_tb_production WHERE empire='" . $players->fields["id"]."'");
  292. if (!$DB) trigger_error($DB->ErrorMsg());
  293. $DB->Execute("DELETE FROM game".$game_id."_tb_empire WHERE id='" . $players->fields["id"]."'");
  294. if (!$DB) trigger_error($DB->ErrorMsg());
  295. $DB->Execute("DELETE FROM game".$game_id."_tb_supply WHERE empire='" . $players->fields["id"]."'");
  296. if (!$DB) trigger_error($DB->ErrorMsg());
  297. $players->MoveNext();
  298. }
  299. $DB->Execute("DELETE FROM game".$game_id."_tb_bond");
  300. if (!$DB) trigger_error($DB->ErrorMsg());
  301. $DB->Execute("DELETE FROM game".$game_id."_tb_coalition");
  302. if (!$DB) trigger_error($DB->ErrorMsg());
  303. $DB->Execute("DELETE FROM game".$game_id."_tb_event");
  304. if (!$DB) trigger_error($DB->ErrorMsg());
  305. $DB->Execute("DELETE FROM game".$game_id."_tb_loan");
  306. if (!$DB) trigger_error($DB->ErrorMsg());
  307. $DB->Execute("DELETE FROM game".$game_id."_tb_trace");
  308. if (!$DB) trigger_error($DB->ErrorMsg());
  309. $DB->Execute("DELETE FROM game".$game_id."_tb_member");
  310. if (!$DB) trigger_error($DB->ErrorMsg());
  311. $DB->Execute("DELETE FROM game".$game_id."_tb_research_done");
  312. if (!$DB) trigger_error($DB->ErrorMsg());
  313. $DB->Execute("DELETE FROM game".$game_id."_tb_session");
  314. if (!$DB) trigger_error($DB->ErrorMsg());
  315. $DB->Execute("DELETE FROM game".$game_id."_tb_invasion");
  316. if (!$DB) trigger_error($DB->ErrorMsg());
  317. $DB->Execute("DELETE FROM game".$game_id."_tb_shoutbox");
  318. if (!$DB) trigger_error($DB->ErrorMsg());
  319. $DB->Execute("DELETE FROM game".$game_id."_tb_stats");
  320. if (!$DB) trigger_error($DB->ErrorMsg());
  321. $DB->Execute("DELETE FROM game".$game_id."_tb_treaty");
  322. if (!$DB) trigger_error($DB->ErrorMsg());
  323. $DB->Execute("DELETE FROM game".$game_id."_tb_market");
  324. if (!$DB) trigger_error($DB->ErrorMsg());
  325. $DB->Execute("DELETE FROM game".$game_id."_tb_tradeconvoy");
  326. if (!$DB) trigger_error($DB->ErrorMsg());
  327. $DB->Execute("DELETE FROM game".$game_id."_tb_coordinator");
  328. if (!$DB) trigger_error($DB->ErrorMsg());
  329. $DB->Execute("INSERT INTO game".$game_id."_tb_market (last_update) VALUES(0)");
  330. if (!$DB) trigger_error($DB->ErrorMsg());
  331. $query = "INSERT INTO game".$game_id."_tb_coordinator (last_master) VALUES('".T_("Nobody")."')";
  332. $DB->Execute($query);
  333. if (!$DB) trigger_error($DB->ErrorMsg());
  334. $query = "UPDATE game".$game_id."_tb_coordinator SET
  335. date=" . time(NULL) . ",game_status=0,
  336. lottery_cash=0,
  337. lottery_date=0
  338. ";
  339. $DB->Execute($query);
  340. if (!$DB) trigger_error($DB->ErrorMsg());
  341. // remove empire logos
  342. if (!file_exists("images/game/empires/".$game_id."/"))
  343. mkdir("images/game/empires/".$game_id."/");
  344. $dir = opendir("images/game/empires/".$game_id."/");
  345. while ($file = readdir($dir)) {
  346. if ($file[0] == ".")
  347. continue;
  348. if ($file == "new.jpg")
  349. continue;
  350. unlink("images/game/empires/".$game_id."/" . $file);
  351. }
  352. closedir($dir);
  353. // reset pirates
  354. $rs = $DB->Execute("SELECT * FROM game".$game_id."_tb_pirate");
  355. if (!$rs) trigger_error($DB->ErrorMsg());
  356. while (!$rs->EOF) {
  357. $pirate = $rs->fields;
  358. $pirate["credits"] = rand(0, CONF_PIRATE_BASEVALUE);
  359. $pirate["food"] = rand(0, CONF_PIRATE_BASEVALUE);
  360. $pirate["research"] = rand(0, CONF_PIRATE_BASEVALUE);
  361. $pirate["covertagents"] = rand(0, CONF_PIRATE_BASEVALUE);
  362. $pirate["stations"] = rand(0, CONF_PIRATE_BASEVALUE);
  363. $pirate["soldiers"] = rand(0, CONF_PIRATE_BASEVALUE);
  364. $pirate["fighters"] = rand(0, CONF_PIRATE_BASEVALUE);
  365. $pirate["lightcruisers"] = rand(0, CONF_PIRATE_BASEVALUE);
  366. $pirate["heavycruisers"] = rand(0, CONF_PIRATE_BASEVALUE);
  367. $pirate["carriers"] = rand(0, CONF_PIRATE_BASEVALUE);
  368. $pirate["food_planets"] = rand(0, CONF_PIRATE_BASEVALUE);
  369. $pirate["ore_planets"] = rand(0, CONF_PIRATE_BASEVALUE);
  370. $pirate["tourism_planets"] = rand(0, CONF_PIRATE_BASEVALUE);
  371. $pirate["supply_planets"] = rand(0, CONF_PIRATE_BASEVALUE);
  372. $pirate["gov_planets"] = rand(0, CONF_PIRATE_BASEVALUE);
  373. $pirate["edu_planets"] = rand(0, CONF_PIRATE_BASEVALUE);
  374. $pirate["urban_planets"] = rand(0, CONF_PIRATE_BASEVALUE);
  375. $pirate["research_planets"] = rand(0, CONF_PIRATE_BASEVALUE);
  376. $pirate["petro_planets"] = rand(0, CONF_PIRATE_BASEVALUE);
  377. $pirate["antipollu_planets"] = rand(0, CONF_PIRATE_BASEVALUE);
  378. $networth = 0;
  379. $networth += ($pirate["credits"] * CONF_NETWORTH_CREDITS);
  380. $planets = 0;
  381. $planets += $pirate["food_planets"];
  382. $planets += $pirate["ore_planets"];
  383. $planets += $pirate["tourism_planets"];
  384. $planets += $pirate["supply_planets"];
  385. $planets += $pirate["gov_planets"];
  386. $planets += $pirate["edu_planets"];
  387. $planets += $pirate["research_planets"];
  388. $planets += $pirate["urban_planets"];
  389. $planets += $pirate["petro_planets"];
  390. $planets += $pirate["antipollu_planets"];
  391. $networth += ($planets * CONF_NETWORTH_PLANETS);
  392. $army = 0;
  393. $army += $pirate["soldiers"] * CONF_NETWORTH_MILITARY_SOLDIER;
  394. $army += $pirate["fighters"] * CONF_NETWORTH_MILITARY_FIGHTER;
  395. $army += $pirate["stations"] * CONF_NETWORTH_MILITARY_STATION;
  396. $army += $pirate["lightcruisers"] * CONF_NETWORTH_MILITARY_LIGHTCRUISER;
  397. $army += $pirate["heavycruisers"] * CONF_NETWORTH_MILITARY_HEAVYCRUISER;
  398. $army += $pirate["carriers"] * CONF_NETWORTH_MILITARY_CARRIER;
  399. $army += $pirate["covertagents"] * CONF_NETWORTH_MILITARY_COVERT;
  400. $networth += $army;
  401. $pirate["networth"] = $networth;
  402. $DB->Execute("UPDATE game".$game_id."_tb_pirate SET soldiers=" . $pirate["soldiers"] . ",
  403. fighters=" . $pirate["fighters"] . ",
  404. lightcruisers=" . $pirate["lightcruisers"] . ",
  405. heavycruisers=" . $pirate["heavycruisers"] . ",
  406. stations=" . $pirate["stations"] . ",
  407. carriers=" . $pirate["carriers"] . ",
  408. covertagents=" . $pirate["covertagents"] . ",
  409. food=" . $pirate["food"] . ",
  410. credits=" . $pirate["credits"] . ",
  411. research=" . $pirate["research"] . ",
  412. food_planets=" . $pirate["food_planets"] . ",
  413. ore_planets=" . $pirate["ore_planets"] . ",
  414. tourism_planets=" . $pirate["tourism_planets"] . ",
  415. supply_planets=" . $pirate["supply_planets"] . ",
  416. gov_planets=" . $pirate["gov_planets"] . ",
  417. edu_planets=" . $pirate["edu_planets"] . ",
  418. research_planets=" . $pirate["research_planets"] . ",
  419. urban_planets=" . $pirate["urban_planets"] . ",
  420. petro_planets=" . $pirate["petro_planets"] . ",
  421. antipollu_planets=" . $pirate["antipollu_planets"] . ",
  422. networth=" . addslashes($pirate["networth"]) . "
  423. WHERE id=" . $pirate["id"]);
  424. if (!$DB) trigger_error($DB->ErrorMsg());
  425. $rs->MoveNext();
  426. }
  427. $DB->CompleteTrans();
  428. header("Location: admin.php?RESETDONE");
  429. die();
  430. }
  431. // *********************************************************************************
  432. // Add game callback
  433. // *********************************************************************************
  434. if (isset ($_GET["ADDGAME"])) {
  435. if ($_POST["game_name"] == "") { $DB->CompleteTrans(); die(T_("Game name empty!")); }
  436. if ($_POST["lifetime"] == "") { $DB->CompleteTrans(); die(T_("Lifetime empty!")); }
  437. if ($_POST["turns_per_day"] == "") { $DB->CompleteTrans(); die(T_("Turns per day empty!")); }
  438. if ($_POST["protection_turns"] == "") { $DB->CompleteTrans(); die(T_("Protection turns empty!")); }
  439. if ($_POST["maxplayers"] == "") { $DB->CompleteTrans(); die(T_("Max players empty!")); }
  440. if ($_POST["players_slot"] == "") { $DB->CompleteTrans(); die(T_("Players slot empty!")); }
  441. $premium_only = 0;
  442. if (isset ($_POST["premium_only"]))
  443. $premium_only = 1;
  444. if (!$DB->Execute("INSERT INTO system_tb_games (name,victory_condition,premium_only,lifetime,turns_per_day,protection_turns,max_players,players_slot) " .
  445. "VALUES('" . addslashes($_POST["game_name"]) . "','" . addslashes($_POST["victory_condition"]) . "',$premium_only," . addslashes($_POST["lifetime"]) . "," . addslashes($_POST["turns_per_day"]) . "," . addslashes($_POST["protection_turns"]) . "," . addslashes($_POST["maxplayers"]) . "," . addslashes($_POST["players_slot"]) . ")")) {
  446. trigger_error($DB->ErrorMsg());
  447. }
  448. $game_id = $DB->Insert_ID();
  449. $fd = fopen("include/game/config_orig.php", "r");
  450. $filedata = fread($fd, filesize("include/game/config_orig.php"));
  451. fclose($fd);
  452. $filedata = str_replace("{game_name}", addslashes($_POST["game_name"]), $filedata);
  453. $filedata = str_replace("{game_lifetime}", addslashes(($_POST["lifetime"] * 60 * 60 * 24)), $filedata);
  454. $filedata = str_replace("{game_bool_research}", ($_POST["victory_condition"] == "research" ? "true" : "false"), $filedata);
  455. $filedata = str_replace("{game_bool_premiumonly}", ($premium_only == 1 ? "true" : "false"), $filedata);
  456. $filedata = str_replace("{game_maxplayers}", addslashes($_POST["maxplayers"]), $filedata);
  457. $filedata = str_replace("{game_turnsperday}", addslashes($_POST["turns_per_day"]), $filedata);
  458. $filedata = str_replace("{game_maxslots}", addslashes($_POST["players_slot"]), $filedata);
  459. $filedata = str_replace("{game_protection_turns}", addslashes($_POST["protection_turns"]), $filedata);
  460. $filedata = str_replace("{game_id}", $game_id, $filedata);
  461. $fd = fopen("include/game/games_config/" . $game_id . ".php", "w");
  462. fwrite($fd, $filedata);
  463. fclose($fd);
  464. copy("include/game/rules_orig.php","include/game/games_rules/".$game_id.".php");
  465. $fd = fopen("include/sql_insert.txt", "r");
  466. $sql_data = fread($fd, filesize("include/sql_insert.txt"));
  467. $sql_data = str_replace("{game_id}",$game_id,$sql_data);
  468. fclose($fd);
  469. $sql_data = explode("/***/", $sql_data);
  470. for ($i = 0; $i < count($sql_data); $i++) {
  471. $query = $sql_data[$i];
  472. $query = str_replace("{prefix}",$game_id,$query);
  473. if (!$DB->Execute($query)) {
  474. $error_str = $DB->ErrorMsg()." = $query";
  475. if (!$DB->Execute("DELETE FROM system_tb_games WHERE id=".$game_id)) trigger_error($DB->ErrorMsg());
  476. if (file_exists("include/game/games_config/" . $game_id . ".php")) unlink("include/game/games_config/" . $game_id . ".php");
  477. if (file_exists("include/game/games_rules/" . $game_id . ".php")) unlink("include/game/games_rules/" . $game_id . ".php");
  478. $DB->Execute("DROP TABLE game".$game_id."_tb_*");
  479. trigger_error($error_str);
  480. }
  481. }
  482. $DB->CompleteTrans();
  483. die(header("Location: admin.php?"));
  484. }
  485. // *********************************************************************************
  486. // Display page
  487. // *********************************************************************************
  488. // populate games
  489. $games = array ();
  490. $rs = $DB->Execute("SELECT * FROM system_tb_games");
  491. while (!$rs->EOF) {
  492. $game = $rs->fields;
  493. $rs2 = $DB->Execute("SELECT COUNT(*) FROM game".$game["id"]."_tb_empire WHERE active=1");
  494. if ($rs2 == NULL) {
  495. // bogus database entry
  496. $DB->Execute("DELETE FROM system_tb_games WHERE id=".$rs->fields["id"]);
  497. $rs->MoveNext();
  498. continue;
  499. }
  500. $game["empires_count"] = $rs2->fields[0];
  501. $rs3 = $DB->Execute("SELECT date FROM game".$game["id"]."_tb_coordinator");
  502. if ($rs3->EOF)
  503. $game["time_elapsed"] = T_("Need a reset!");
  504. else {
  505. $elapsed = (time(NULL) - $rs3->fields["date"]);
  506. $game["time_elapsed"] = (floor($elapsed / (60 * 60 * 24)) + 1) . " ".T_("days");
  507. }
  508. $game["description"] = stripslashes($game["description"]);
  509. $empires = array();
  510. $rs4 = $DB->Execute("SELECT * FROM game".$game["id"]."_tb_empire ORDER BY networth DESC");
  511. $rank = 1;
  512. while(!$rs4->EOF) {
  513. $empire = $rs4->fields;
  514. $empire["rank"] = $rank++;
  515. $empire["lifespan"] = formatTime(time(NULL) - $empire["date"]);
  516. $empires[] = $empire;
  517. $rs4->MoveNext();
  518. }
  519. $game["empires"] = $empires;
  520. $games[] = $game;
  521. $rs->MoveNext();
  522. }
  523. $TPL->assign("games", $games);
  524. $DB->CompleteTrans();
  525. $TPL->display("page_admin.html");
  526. ?>