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

/brain/build-editor.php

https://bitbucket.org/obsidian/selador
PHP | 388 lines | 292 code | 58 blank | 38 comment | 59 complexity | 70df4d88cf43e09ec96cefe0ea53ef50 MD5 | raw file
Possible License(s): AGPL-3.0, LGPL-2.1
  1. <?php
  2. /* build-editor.php - Front-end code for the building editor in admin pages
  3. *
  4. * Copyright (C) 2006, 2007, 2008 Kevin Read, Simone Schaefer
  5. *
  6. * This file is part of Selador, a browser-based fantasy strategy game
  7. *
  8. * This program is distributed under the terms of the GNU Affero General Public License.
  9. *
  10. *
  11. * Selador is free software: you can redistribute it and/or modify
  12. * it under the terms of the GNU Affero General Public License as published by
  13. * the Free Software Foundation, either version 3 of the License, or
  14. * any later version.
  15. *
  16. * Selador is distributed in the hope that it will be useful,
  17. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19. * GNU Affero General Public License for more details.
  20. *
  21. * You should have received a copy of the GNU Affero General Public License
  22. * along with Selador. If not, see <http://www.gnu.org/licenses/>.
  23. **/
  24. // Don't push - this code is crude
  25. if ("buildings" == $module)
  26. $uploaddir = "/users/selador/trunk/gfx/b/";
  27. if ("research" == $module)
  28. $uploaddir = "/users/selador/trunk/gfx/r/";
  29. $img_size = "256x256";
  30. $build_types = array (1 => "bergfried", "marktplatz", "garnison", "ratshalle", "zunfthaus", "rohstofflager",
  31. "waffenschmied", "rüstungsschmiede", "werkstatt", "alchimist", "stadtmauer", "wachturm", "taverne",
  32. "karavanserei", "musikakademie", "militärakademie", "zeughaus", "schützenhof", "stallungen", "burg", "kloster");
  33. $res_types = array (1 => "handel", "fuss", "fernkampf", "kommandant", "reiterei", "belagerung", "burgtruppen", "off-forschung", "def-forschung", "ackerbau", "waldbau", "bergbau", "tagebau", "spio", "gegenspio", "diplo", "mauer", "logistik");
  34. $debug=true;
  35. // Wurde Löschen geklickt?
  36. if (isset ($_REQUEST['delete']))
  37. {
  38. // Aber erst Sicherheitsabfrage abfragen
  39. if ($_REQUEST['sure'] == "on")
  40. {
  41. $query = "delete from $module where id=".$_REQUEST['id'];
  42. mysql_query ($query);
  43. $cmd = "overview"; // Und wieder die Übersicht anzeigen
  44. }
  45. }
  46. else // Wird ausgeführt, wenn nicht gelöscht werden soll
  47. {
  48. // Nur wenn uns schon Werte übergeben wurden, wollen wir auch wirklich speichern, gelle :)
  49. if (isset ($_REQUEST['submit']))
  50. {
  51. print_r ($_REQUEST);
  52. // Hier Auswertung des Arrays der übergebenen Werte
  53. // Da mit dem $_REQUEST-Array nicht so schön zu arbeiten ist,
  54. // kopieren wir die Werte aus dem Formular in was menschlich lesbares.
  55. if (isset ($_REQUEST['id']))
  56. $id = $_REQUEST['id'];
  57. $name = $_REQUEST['name'];
  58. $oneliner = $_REQUEST['oneliner'];
  59. $sdescription = $_REQUEST['kbeschreibung'];
  60. $description=$_REQUEST['beschreibung'];
  61. $kosten = $_REQUEST['kosten'];
  62. $bdep = $_REQUEST['bdep'];
  63. $bdeplevel = $_REQUEST['bdeplevel'];
  64. $ddep = $_REQUEST['ddep'];
  65. $ddeplevel = $_REQUEST['ddeplevel'];
  66. $race = $_REQUEST['raceid'];
  67. $type = $_REQUEST['type'];
  68. $display_order = $_REQUEST['display_order'];
  69. if (isset ($_FILES))
  70. {
  71. if ($_FILES['imagefile']['size'] > 0)
  72. {
  73. $uploadfile = $uploaddir . basename($_FILES['imagefile']['name']);
  74. if ($debug)
  75. {
  76. echo "Hochladen von ";
  77. print_r ($_FILES);
  78. echo " nach ".$uploadfile."<br>\n";
  79. }
  80. if (move_uploaded_file($_FILES['imagefile']['tmp_name'], $uploadfile))
  81. {
  82. chmod ($uploadfile, 0755);
  83. if ($debug) echo "<b>Bild wurde gespeichert!</b><br>\n";
  84. $img = basename($_FILES['imagefile']['name']);
  85. }
  86. else
  87. {
  88. echo "<b>Fehler beim Hochladen!</b><br>\n";
  89. die ();
  90. }
  91. $res = finfo_open(FILEINFO_MIME); /* return mime type ala mimetype extension */
  92. $mime = finfo_file($res, $uploadfile);
  93. if (!strstr ("jpeg", $mime))
  94. $pic_ext = $id."jpg";
  95. if (!strstr ("gif", $mime))
  96. $pic_ext = $id."gif";
  97. if (!strstr ("png", $mime))
  98. $pic_ext = $id."png";
  99. finfo_close($res);
  100. }
  101. }
  102. if (isset ($id))
  103. {
  104. $query = "update $module set ";
  105. for ($temp = 0; $temp < 3; $temp++)
  106. {
  107. if (!isset ($bdep[$temp]))
  108. $bdep[$temp] = 0;
  109. if (!isset ($bdeplevel[$temp]))
  110. $bdeplevel[$temp] = 0;
  111. $query .= "bdep".($temp+1)."=".$bdep[$temp].", bdeplevel".($temp+1)."=".$bdeplevel[$temp].", ";
  112. }
  113. for ($temp = 0; $temp < 3; $temp++)
  114. {
  115. if (!$ddep[$temp])
  116. $ddep[$temp] = 0;
  117. if (!$ddeplevel[$temp])
  118. $ddeplevel[$temp] = 0;
  119. $query .= "ddep".($temp+1)."=".$ddep[$temp].", ddeplevel".($temp+1)."=".$ddeplevel[$temp].", ";
  120. }
  121. $query .= "name=\"".$name."\", oneliner=\"".$oneliner."\", type=".$type.", race=".$race.", ldescription=\"".$description."\", description=\"".$sdescription."\", display_order=\"".$display_order."\"";
  122. if (isset ($img))
  123. $query .= ", pic=\"".$img."\"";
  124. foreach ($kosten as $idx => $thisone)
  125. {
  126. $query .= ", costs".($idx+1)."=".(int)$thisone;
  127. }
  128. $query .= " where id=".$id;
  129. }
  130. else
  131. {
  132. // Hier werden die Daten in die DB gespeichert - genauer gesagt formulieren
  133. // wir eine SQL-Anfrage, die die Daten in der Datenbank ablegt
  134. $query = "insert into $module (name, oneliner, display_order, race, type, description, ldescription, costs1, costs2, costs3, costs4";
  135. foreach ($bdep as $idx => $thisone)
  136. {
  137. if ($thisone != 0)
  138. {
  139. $query .= ", bdep".($idx+1).", bdeplevel".($idx+1);
  140. $query_add .= ", ".$thisone.", ".$bdeplevel[$idx];
  141. }
  142. }
  143. foreach ($ddep as $idx => $thisone)
  144. {
  145. if ($thisone != 0)
  146. {
  147. $query .= ", ddep".($idx+1).", ddeplevel".($idx+1);
  148. $query_add .= ", ".$thisone.", ".$ddeplevel[$idx];
  149. }
  150. }
  151. $query .= ') values ("'.$name.'", "'.$oneliner.'", '.$display_order.', '.$race.', '.$type.', "'.mysql_real_escape_string ($sdescription).'", "'.mysql_real_escape_string ($description).'"';
  152. foreach ($kosten as $idx => $thisone)
  153. {
  154. $query .= ', '.(int)$thisone;
  155. }
  156. $query .= $query_add.")";
  157. }
  158. // Hier wird die Anfrage an die Datenbank gesendet.
  159. echo $query;
  160. if (!mysql_query ($query))
  161. echo "<b>Fehler beim Einf&uuml;gen von $query: ".mysql_error()."</b><br>\n";
  162. if (!isset ($id))
  163. {
  164. $id = mysql_insert_id ();
  165. }
  166. // rename ($uploadfile, $uploaddir.$pic_new);
  167. $cmd = "overview";
  168. // echo "<a href=\"gebliste.php\">Zur&uuml;ck zur Liste</a>.";
  169. }
  170. else
  171. {
  172. // Wurde uns was übergeben?
  173. if (isset ($id))
  174. {
  175. $query = "select * from $module where id=".$id;
  176. $res = mysql_query ($query);
  177. $dbrow = mysql_fetch_array ($res);
  178. $name = $dbrow['name'];
  179. $description=stripslashes ($dbrow['ldescription']);
  180. $sdescription=stripslashes ($dbrow['description']);
  181. $oneliner=$dbrow['oneliner'];
  182. $kosten[] = $dbrow['costs1'];
  183. $kosten[]=$dbrow['costs2'];
  184. $kosten[]=$dbrow['costs3'];
  185. $kosten[]=$dbrow['costs4'];
  186. $race=$dbrow['race'];
  187. $type=$dbrow['type'];
  188. $pic = $dbrow['pic'];
  189. $display_order = $dbrow['display_order'];
  190. }
  191. else
  192. $race = -1;
  193. echo '<form name="editor" action="admin.php" method="POST" enctype="multipart/form-data">';
  194. if (isset ($id))
  195. echo '<input name="id" type="hidden" value="'.$id.'">';
  196. echo "<input name=\"module\" type=\"hidden\" value=\"$module\">\n";
  197. echo '<input name="cmd" type="hidden" value="edit">';
  198. echo '<table><tr>';
  199. echo "<td>Rasse</td><td colspan=\"3\"><select name=\"raceid\" size=\"1\">\n";
  200. $race_query = "select * from races order by raceid";
  201. $res = mysql_query ($race_query);
  202. echo "<option value=\"0\">Egal</option>\n";
  203. while ($race_row = mysql_fetch_array ($res))
  204. {
  205. $races[$race_row['raceid']] = $race_row['name_plural'];
  206. echo "<option value=\"".$race_row['raceid']."\"";
  207. if (isset ($race))
  208. if ($race_row['raceid'] == $race)
  209. echo " selected";
  210. echo ">".$race_row['name_plural']."</option>\n";
  211. }
  212. if ($module == "buildings")
  213. {
  214. $types = $build_types;
  215. $filling[0] = "Geb&auml;ude bauen";
  216. $filling[1] = "Geb&auml;ude";
  217. }
  218. elseif ($module == "research")
  219. {
  220. $types = $res_types;
  221. $filling[0] = "erforschen";
  222. $filling[1] = "Forschungs";
  223. }
  224. echo "</select> <small>Nur diese Rasse kann das ". $filling[0] . "</small>\n</td></tr><tr><td>" . $filling[1] . "typ</td><td colspan=\"3\"><select name=\"type\" size=\"1\">\n";
  225. unset ($filling);
  226. foreach ($types as $idx => $this_type)
  227. {
  228. echo "<option value=\"".$idx."\"";
  229. if (isset ($type))
  230. if ($idx == $type)
  231. echo " selected";
  232. echo ">".$this_type."</option>\n";
  233. }
  234. if ($module == "buildings")
  235. {
  236. $filling[0] = "Geb&auml;ude der einzelnen Rassen (die ja anders heissen als die der Menschen)";
  237. $filling[1] = "Geb&auml;ude";
  238. }
  239. elseif ($module == "research")
  240. {
  241. $filling[0] = "Forschungen";
  242. $filling[1] = "Forschungs";
  243. }
  244. echo "</select> <small>F&uuml;r die interne Zuordnung der " . $filling[0] . "</small>\n";
  245. echo "</td></tr><tr><td>" . $filling[1] ."namen</td>\n";
  246. unset ($filling);
  247. $ress = array ("Holz", "Stein", "Eisen", "Mana");
  248. echo "<td align=\"left\" colspan=\"2\"><input name=\"name\" size=\"30\" value=\"".$name."\"></td><td rowspan=\"3\">";
  249. // picture
  250. echo "<img width=\"188\" height=\"160\" src=\"../gfx/";
  251. if ($module == "buildings")
  252. echo "b/" . $race . "/w/" . $type . "-1.jpg";
  253. if ($module == "research")
  254. echo "r/" . $id;
  255. echo "\"/>\n";
  256. echo "</td></tr><tr>";
  257. echo "<td align=\"left\" valign=\"top\">Einzeiler</td><td colspan=\"2\"><input name=\"oneliner\" size=\"60\" length=\"254\" value=\"".$oneliner."\"></td></tr>\n<tr>";
  258. echo "<td align=\"left\" valign=\"top\">Kurzinfo</td>";
  259. echo "<td colspan=\"3\"><textarea name=\"kbeschreibung\" cols=\"60\" rows=\"8\">".$sdescription."</textarea></td>";
  260. echo "</tr><tr>\n";
  261. echo "<td align=\"left\" valign=\"top\">Beschreibung</td>";
  262. echo "<td colspan=\"3\"><textarea name=\"beschreibung\" cols=\"60\" rows=\"8\">".$description."</textarea></td>";
  263. echo "</tr><tr>\n";
  264. echo "<td>Anzeige-Reihenfolge: <input type=\"text\" name=\"display_order\" value=\"".$display_order."\"></td><td>&nbsp;</td>";
  265. echo "</tr><tr>\n";
  266. echo "<td>Kosten Stufe 1</td><td>Geb&auml;ude-Abh&auml;ngigkeiten</td><td colspan=\"2\">Forschungs-Abh&auml;ngigkeiten</td></tr>\n";
  267. echo "<tr><td align=\"left\" valign=\"top\"><table>\n";
  268. // Es ist einfacher, eine Schleife um den Array mit den Ressourcen kreisen zu lassen,
  269. // als die vier Zeilen von Hand zu schreiben. Diese Übung lassen wir für den Leser ;)
  270. foreach ($ress as $idx => $thisone)
  271. {
  272. echo "<tr><td>&nbsp;".$thisone."</td>";
  273. echo "<td><input name=\"kosten[]\" size=\"5\" value=\"".$kosten[$idx]."\"></td></tr>\n";
  274. }
  275. echo "</table></td><td align=\"left\" valign=\"top\" ><table>\n";
  276. for ($temp = 1; $temp < 4; $temp++)
  277. {
  278. $bdep = $dbrow['bdep'.$temp];
  279. $bdeplevel = $dbrow['bdeplevel'.$temp];
  280. echo "<tr><td><select name=\"bdep[]\" size=\"1\">";
  281. if ($bdep == 0)
  282. echo "<option selected value=\"0\">Nix</option>\n";
  283. else
  284. echo "<option value=\"0\">Nix</option>\n";
  285. $query = "select id, name, race from buildings";
  286. $gebres = mysql_query ($query);
  287. while ($gebrow = mysql_fetch_array ($gebres))
  288. {
  289. if ($bdep == $gebrow['id'])
  290. echo "<option value=\"".$gebrow['id']."\" selected>".$gebrow['name']." (".$races[$gebrow['race']].") </option>\n";
  291. else
  292. echo "<option value=\"".$gebrow['id']."\">".$gebrow['name']." (".$races[$gebrow['race']].") </option>\n";
  293. }
  294. echo "</select>&nbsp;\n";
  295. echo "<input name=\"bdeplevel[]\" size=\"3\" value=\"".$bdeplevel."\"></td></tr>\n";
  296. }
  297. echo "</table></td><td align=\"left\" valign=\"top\" >";
  298. echo "<table>\n";
  299. for ($temp = 1; $temp < 4; $temp++)
  300. {
  301. $ddep = $dbrow['ddep'.$temp];
  302. $ddeplevel = $dbrow['ddeplevel'.$temp];
  303. echo "<tr><td><select name=\"ddep[]\" size=\"1\">";
  304. if ($ddep == 0)
  305. echo "<option selected value=\"0\">Nix</option>\n";
  306. else
  307. echo "<option value=\"0\">Nix</option>\n";
  308. $query = "select id, name, race from research";
  309. $gebres = mysql_query ($query);
  310. while ($gebrow = mysql_fetch_array ($gebres))
  311. {
  312. if ($ddep == $gebrow['id'])
  313. echo "<option value=\"".$gebrow['id']."\" selected>".$gebrow['name']." (".$races[$gebrow['race']].") </option>\n";
  314. else
  315. echo "<option value=\"".$gebrow['id']."\">".$gebrow['name']." (".$races[$gebrow['race']].") </option>\n";
  316. }
  317. echo "</select>&nbsp;\n";
  318. echo "<input name=\"ddeplevel[]\" size=\"3\" value=\"".$ddeplevel."\"></td></tr>\n";
  319. }
  320. echo "</table>";
  321. echo "</td>\n";
  322. echo "<td align=\"right\"><input type=\"submit\" name=\"submit\" value=\"Speichern\">"; // Der Submit-Button sendet das Formular ab
  323. echo "&nbsp;<input type=\"submit\" name=\"delete\" value=\"L&ouml;schen\">\n"; // Der Submit-Button sendet das Formular ab
  324. echo "<br><input type=\"checkbox\" name=\"sure\"> Wirklich l&ouml;schen?</td><td>&nbsp;</td></tr>\n";
  325. echo "</table></form>\n";
  326. }
  327. }
  328. ?>