functions.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. require "settings.php";
  3. function add_maintainer( $api ) {
  4. /**
  5. * @param string $api Provided Torn API string
  6. * @return array XID and name of maintainer
  7. */
  8. global $db_path;
  9. $maintainer = array(0, '?');
  10. $url = "https://api.torn.com/user/?key=";
  11. $url .= $api;
  12. $response = json_decode( file_get_contents( $url ) );
  13. if ( property_exists( $response, "error" ) ) {
  14. print "ERROR " . $response->error->code . ": " . $response->error->error . "\n";
  15. $maintainer[0] = $response->error->code;
  16. $maintainer[1] = $response->error->error;
  17. } else {
  18. $pdo = null;
  19. try {
  20. $pdo = new PDO("sqlite:" . "${db_path}/slork.sqlite");
  21. } catch (PDOException $e) {
  22. // handle the exception here
  23. }
  24. $query = "INSERT OR REPLACE INTO maintainer (maintainer, api) VALUES (?, ?);";
  25. $stmt = $pdo->prepare( $query );
  26. $stmt->execute( [$response->player_id, $api] );
  27. $query = "INSERT OR REPLACE INTO player (maintainer, player, property, value) VALUES (?, ?, ?, ?);";
  28. $stmt = $pdo->prepare( $query );
  29. $stmt->execute( [$response->player_id, $response->player_id,
  30. 'name', $response->name] );
  31. // $pdo->commit();
  32. $maintainer[0] = $response->player_id;
  33. $maintainer[1] = $response->name;
  34. }
  35. $pdo = null;
  36. return $maintainer;
  37. }
  38. function get_maintainer( $id ) {
  39. /**
  40. * @param string $id Maintainer's XID
  41. * @return array XID and name of maintainer
  42. */
  43. global $db_path;
  44. $pdo = null;
  45. try {
  46. $pdo = new PDO("sqlite:" . "${db_path}/slork.sqlite");
  47. } catch (PDOException $e) {
  48. // handle the exception here
  49. }
  50. $query = "SELECT value FROM player WHERE maintainer = ? AND player = ? AND property = 'name';";
  51. $stmt = $pdo->prepare( $query );
  52. $stmt->execute( [$id, $id] );
  53. $maintainer = [0, '?'];
  54. $row = $stmt->fetch();
  55. $maintainer[0] = $id;
  56. $maintainer[1] = $row['value'];
  57. $pdo = null;
  58. return $maintainer;
  59. }
  60. function add_player( $maintainer, $player ) {
  61. global $db_path;
  62. $pdo = null;
  63. try {
  64. $pdo = new PDO("sqlite:" . "${db_path}/slork.sqlite");
  65. } catch (PDOException $e) {
  66. // handle the exception here
  67. }
  68. $query = <<<QUERY
  69. INSERT OR REPLACE INTO player_properties (maintainer, player, property)
  70. VALUES (?, ?, ?)
  71. QUERY;
  72. $stmt = $pdo->prepare( $query );
  73. $properties = '["name"]';
  74. $stmt->execute( [$maintainer, $player, $properties] );
  75. // For starters add player's name
  76. $query = "SELECT api FROM maintainer WHERE maintainer = ?;";
  77. $stmt = $pdo->prepare( $query );
  78. $stmt->execute( [$maintainer] );
  79. $api = $stmt->fetch()['api'];
  80. $url = "https://api.torn.com/user/${player}?key=";
  81. $url .= $api;
  82. $response = json_decode( file_get_contents( $url ) );
  83. if ( property_exists( $response, "error" ) ) {
  84. print "ERROR " . $response->error->code . ": " . $response->error->error . "\n";
  85. $maintainer[0] = $response->error->code;
  86. $maintainer[1] = $response->error->error;
  87. } else {
  88. $name = $response->name;
  89. $query = <<<QUERY
  90. INSERT INTO player (maintainer, player, property, value)
  91. VALUES (?, ?, 'name', ?);
  92. QUERY;
  93. $stmt = $pdo->prepare($query);
  94. $stmt->execute([$maintainer, $player, $name]);
  95. $maintainer = get_maintainer( $maintainer );
  96. }
  97. return $maintainer;
  98. }
  99. function delete_player( $player ) {
  100. global $db_path;
  101. $pdo = null;
  102. try {
  103. $pdo = new PDO("sqlite:" . "${db_path}/slork.sqlite");
  104. } catch (PDOException $e) {
  105. // handle the exception here
  106. }
  107. $maintainer_id = $_REQUEST['maintainer'];
  108. $query = "DELETE FROM player WHERE player = ? AND maintainer = ?;";
  109. $stmt = $pdo->prepare( $query );
  110. $stmt->execute( [$player, $maintainer_id] );
  111. $maintainer = get_maintainer( $maintainer_id );
  112. if ( $player == $maintainer_id ) {
  113. // Poof
  114. $query = "DELETE FROM maintainer WHERE maintainer = ?";
  115. $stmt = $pdo->prepare( $query );
  116. $stmt->execute( [$maintainer[0]] );
  117. unset( $_REQUEST['action'] );
  118. unset( $_REQUEST['maintainer'] );
  119. unset( $_REQUEST['player'] );
  120. $maintainer = [0, '?'];
  121. }
  122. $pdo = null;
  123. return $maintainer;
  124. }
  125. function store_player_properties( $player, $maintainer, $properties ) {
  126. global $db_path;
  127. $pdo = null;
  128. try {
  129. $pdo = new PDO("sqlite:" . "${db_path}/slork.sqlite");
  130. } catch (PDOException $e) {
  131. // handle the exception here
  132. }
  133. $query = "INSERT OR REPLACE INTO player_properties (maintainer, player, property) VALUES (?, ?, ?);";
  134. $stmt = $pdo->prepare( $query );
  135. if ( ! in_array( 'name', $properties ) ) {
  136. $properties[] = 'name';
  137. }
  138. $json = json_encode( $properties );
  139. $stmt->execute( [$maintainer[0], $player, $json] );
  140. // Next remove all properties that are in player
  141. // but not in the new list
  142. $query = "SELECT property FROM player WHERE maintainer = ? AND player = ?";
  143. $stmt = $pdo->prepare( $query );
  144. $stmt->execute( [$maintainer[0], $player] );
  145. $rows = $stmt->fetchAll();
  146. $properties_delete = [];
  147. foreach ( $rows as $row ) {
  148. if ( ! in_array( $row['property'], $properties ) ) {
  149. $properties_delete[] = $row['property'];
  150. }
  151. }
  152. $query = "DELETE FROM player WHERE maintainer = ? AND player = ? AND property = ?;";
  153. $stmt = $pdo->prepare( $query );
  154. foreach ( $properties_delete as $property ) {
  155. $stmt->execute( [$maintainer[0], $player, $property] );
  156. }
  157. }
  158. function get_property( $maintainer, $player, $property ) {
  159. global $db_path;
  160. $pdo = null;
  161. try {
  162. $pdo = new PDO("sqlite:" . "${db_path}/slork.sqlite");
  163. } catch (PDOException $e) {
  164. // handle the exception here
  165. }
  166. $query = "SELECT value FROM player WHERE maintainer = ? AND player = ? and property = ?;";
  167. $stmt = $pdo->prepare( $query );
  168. $stmt->execute( [$maintainer, $player, $property] );
  169. return $stmt->fetch()['value'];
  170. }