snippets.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <?php
  2. // This file contains HTML snippets for the several possible forms
  3. $pdo = null;
  4. try {
  5. $pdo = new PDO("sqlite:" . "${db_path}/slork.sqlite");
  6. } catch (PDOException $e) {
  7. // handle the exception here
  8. }
  9. $snippets = [];
  10. if ( $screen == 0 ) {
  11. // Select all maintainers
  12. $query = <<<QUERY
  13. SELECT maintainer.maintainer, player.value
  14. FROM maintainer
  15. JOIN player ON maintainer.maintainer = player.player
  16. WHERE player.property = 'name';
  17. QUERY;
  18. $all_maintainers = [];
  19. $rows = $pdo->query($query);
  20. if ( $rows ) {
  21. foreach ($rows as $row) {
  22. $all_maintainers[$row['maintainer']] = $row['value'];
  23. }
  24. }
  25. print( "<pre>" );
  26. print_r( $all_maintainers );
  27. print( "</pre>" );
  28. $snippets[0] = <<<HTML
  29. <form>
  30. <!-- This form adds a new maintainer -->
  31. <div class="form-group">
  32. <label for="newAPIKey">Add a new maintainer ...</label>
  33. <input type="hidden" name="action" value="i">
  34. <input type="password" class="form-control" name="api" id="newAPIKey" aria-describedby="newAPIKey" placeholder="Enter API key">
  35. <small id="newAPIKey" class="form-text text-muted">Assuming you are new here, add your Torn API key</small>
  36. </div>
  37. <button type="submit" class="btn btn-primary">Submit</button>
  38. </form>
  39. <div><p>&nbsp;</p><hr><p>&nbsp;</p></div>
  40. <!-- This part selects an existing maintainer -->
  41. <form>
  42. <div class="form-group">
  43. <label for="existingMaintainer">... or select an existing maintainer</label>
  44. <input type="hidden" name="action" value="m">
  45. <select class="form-control" name="maintainer" id="existingMaintainer">
  46. <option></option><!-- Empty option -->
  47. HTML;
  48. foreach ($all_maintainers as $maintainer_key => $maintainer_value) {
  49. $snippets[0] .= "\t\t\t\t<option value=\"$maintainer_key\">$maintainer_value [$maintainer_key]</option>\n";
  50. }
  51. $snippets[0] .= <<<HTML
  52. </select>
  53. </div>
  54. <button type="submit" class="btn btn-primary">Submit</button>
  55. </form>
  56. HTML;
  57. }
  58. if ( $screen == 2 ) {
  59. // New player
  60. $snippets[2] = <<<HTML
  61. <form id="player-new">
  62. <div class="form-group">
  63. <label for="player-new">Add new player ...</label>
  64. <input type="hidden" name="maintainer" value="$maintainer[0]" form="player-new">
  65. <input type="number" name="player" form="player-new">
  66. <button class="btn btn-primary" name="action" value="p" form="player-new">New</button>
  67. </div>
  68. </form>
  69. <div>
  70. <p>&nbsp;</p><hr><p>&nbsp;</p>
  71. </div>
  72. HTML;
  73. // Let maintainer select (or delete) a player
  74. $query = <<<SQL
  75. SELECT player, value FROM player
  76. WHERE maintainer = ?
  77. AND property = 'name'
  78. -- AND player != ?
  79. ;
  80. SQL;
  81. $stmt = $pdo->prepare($query);
  82. $stmt->execute( [$maintainer[0]] );
  83. $rows = $stmt->fetchAll();
  84. /*
  85. print("<pre>");
  86. print( "\$rows:\n" );
  87. print_r($rows);
  88. print("</pre>");
  89. */
  90. $players_id = array();
  91. foreach ($rows as $row) {
  92. $players_id[] = array($row['player'], $row['value'] . " [" . $row['player'] . "]");
  93. }
  94. $snippets[2] .= "... or edit existing player";
  95. foreach ($players_id as $player) {
  96. $snippets[2] .= <<<HTML
  97. <div>
  98. <form id="player_edit_${player[0]}">
  99. <ul class="list-group list-group-flush">
  100. HTML;
  101. $snippets[2] .= "\n\t\t\t\t\t\t<li class=\"w-100 p-3 list-group-item\">$player[1]";
  102. $snippets[2] .= "<input type=\"hidden\" name=\"player\" value=\"$player[0]\" form=\"player_edit_${player[0]}\"></td><td>";
  103. $snippets[2] .= "<input type=\"hidden\" name=\"maintainer\" value=\"$maintainer[0]\" form=\"player_edit_${player[0]}\">";
  104. $snippets[2] .= "<button class=\"btn btn-primary float-right btn-sm\" name=\"action\" value=\"e\" form=\"player_edit_${player[0]}\">Edit</button>";
  105. $snippets[2] .= "<button class=\"btn btn-danger float-right btn-sm\" name=\"action\" value=\"r\" form=\"player_edit_${player[0]}\">Remove</button>\n\t\t\t\t\t</li>";
  106. $snippets[2] .= <<<HTML
  107. \n </ul>
  108. </form>
  109. </div>
  110. HTML;
  111. }
  112. $snippets[2] .= <<<HTML
  113. <div>
  114. <p>&nbsp;</p>
  115. <a href="./index.php"><button class="btn btn-info">Ready</button></a>
  116. </div>
  117. HTML;
  118. }
  119. if ( $screen == 3 ) {
  120. // Edit properties of player
  121. // Provided is $_REQUEST['player']
  122. // $maintainer[id, 'name'] is also available in this section
  123. $player = $_REQUEST['player'];
  124. $query = <<<QUERY
  125. SELECT player_properties.property, player.value
  126. FROM player_properties
  127. JOIN player ON player_properties.player = player.player
  128. WHERE player_properties.player = ?
  129. AND player_properties.maintainer = ?
  130. AND player.property = 'name';
  131. QUERY;
  132. $stmt = $pdo->prepare( $query );
  133. $stmt->execute( [$player, $maintainer[0]] );
  134. //$rows = $stmt->fetchAll();
  135. $player_properties = [];
  136. $name = '?';
  137. foreach ($stmt as $key => $value) {
  138. // @TODO This is one row now since we store it in a JSON string
  139. /*
  140. print( "<pre>" );
  141. print( "[\$key, \$value]" );
  142. print_r( [$key, $value] );
  143. print( "</pre>" );
  144. */
  145. $player_properties[] = json_decode( $value['property'] );
  146. if ($key == 'name') {
  147. $name = $value['value'];
  148. }
  149. }
  150. $query = <<<QUERY
  151. SELECT property, parent FROM properties ORDER BY parent;
  152. QUERY;
  153. $stmt = $pdo->query( $query );
  154. $properties = [];
  155. foreach ($stmt as $row) {
  156. $properties[] = [$row['property'], $row['parent']];
  157. }
  158. $snippets[3] = '';
  159. /*
  160. print("<pre>");
  161. print_r($player_properties);
  162. print_r($properties);
  163. print_r( [$player, $maintainer[0]] );
  164. print("</pre>\n");
  165. */
  166. $snippets[3] = <<<HTML
  167. <!--
  168. <div>
  169. <p>&nbsp;</p>
  170. <hr>
  171. <p>&nbsp;</p>
  172. </div>
  173. -->
  174. <form id="player-edit">
  175. <div class="form-group">
  176. <label for="player-edit">Select properties for player ${name} [${player}]</label>
  177. <select class="selectpicker" multiple form="player-edit" name="properties[]">
  178. <option>ALL</option>
  179. <option>NONE</option>
  180. HTML;
  181. $snippets[3] .= "\n";
  182. /*
  183. print("<pre>" );
  184. print("\$player_properties:\n");
  185. print_r( $player_properties );
  186. print( "</pre>" );
  187. */
  188. $parent = '';
  189. foreach ( $properties as $property ) {
  190. if ( $property[1] != $parent ) {
  191. $parent = $property[1];
  192. $snippets[3] .= "\t\t\t\t<option disabled>${parent}</option>";
  193. }
  194. $selected = '';
  195. if ( in_array( $property[0], $player_properties[0] ) ) {
  196. $selected = ' selected';
  197. }
  198. $snippets[3] .= "\t\t\t\t<option${selected}>${property[0]}</option>\n";
  199. }
  200. $snippets[3] .= <<<HTML
  201. </select>
  202. <input type="hidden" name="action" value="s">
  203. <input type="hidden" name="maintainer" value="${maintainer[0]}">
  204. <input type="hidden" name="player" value="${player}">
  205. </div>
  206. <button class="btn-save btn btn-primary btn-sm">Save</button>
  207. </form>
  208. <div>
  209. <p>&nbsp;</p>
  210. <a href="./index.php?action=m&maintainer=${maintainer[0]}"><button class="btn btn-info">Ready</button></a>
  211. </div>
  212. HTML;
  213. }
  214. if ( $screen == 4 ) {
  215. $query = <<<QUERY
  216. SELECT value FROM player WHERE maintainer = ? AND player = ? AND property = 'name';
  217. QUERY;
  218. $stmt = $pdo->prepare($query);
  219. // $player = $_REQUEST['player'];
  220. // $maintainer = $_REQUEST['maintainer'];
  221. $stmt->execute( [$maintainer[0], $player] );
  222. $row = $stmt->fetch();
  223. $snippets[4] = <<<HTML
  224. <form id="player_delete_${player}">
  225. <label for="player_delete_${player}">Are you sure you want to delete ${row['value']} ${player}?</label>
  226. <input type="hidden" name="player" value="$player" form="player_delete_${player}"></td><td>
  227. <input type="hidden" name="maintainer" value="${maintainer[0]}" form="player_delete_${player}">
  228. ${row['value']} ${player}
  229. <button class="btn btn-danger float-right btn-sm" name="action" value="x" form="player_delete_${player}">Remove</button>\n\t\t\t\t\t</li>
  230. </form>
  231. <div>
  232. <p>&nbsp;</p>
  233. <a href="./index.php?action=m&maintainer=${maintainer[0]}"><button class="btn btn-info">Ready</button></a>
  234. </div>
  235. HTML;
  236. }