functions.php 5.1 KB

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