OnlineGames.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <?php
  2. /* Games.php */
  3. $hostname = 'localhost';
  4. $username = 'narKampen';
  5. $pass = 'IfRLzj2HJBXA9eei';
  6. $database = 'narKampen';
  7. $conn = new mysqli($hostname, $username, $pass, $database);
  8. if (!$conn) {
  9. die("Connection Failed. ". mysqli_connect_error());
  10. }
  11. mysqli_set_charset($conn,'utf8');
  12. $userId = $conn->real_escape_string(isset($_POST['userId'])?$_POST['userId']:"");
  13. $callFunction = $conn->real_escape_string(isset($_POST['f'])?$_POST['f']:"");
  14. $gameId = $conn->real_escape_string(isset($_POST['gameId'])?$_POST['gameId']:"");
  15. $userName = $conn->real_escape_string(isset($_POST['userName'])?$_POST['userName']:"");
  16. if ($callFunction === "list"){
  17. $sql = "SELECT * FROM game WHERE id IN (SELECT gameId FROM gamePlayers WHERE playerId = $userId)";
  18. $result = $conn->query($sql);
  19. if ($result->num_rows > 0) {
  20. $returnArray = array();
  21. $i = 0;
  22. while ($data = $result->fetch_assoc()) {
  23. foreach ($data as $key => $value) {
  24. $returnArray[$i][$key] = $value;
  25. }
  26. $i++;
  27. }
  28. echo json_encode($returnArray);
  29. } else {
  30. echo "No games found for user";
  31. }
  32. } else if ($callFunction === "decline"){
  33. $sql = "UPDATE gamePlayers SET status = 'DECLINED' WHERE gameId = $gameId AND playerId = (SELECT id from users WHERE username = '$userName')";
  34. $result = $conn->query($sql);
  35. if (!$result) {
  36. echo "UPDATE player status failed " . $conn->error;
  37. } else {
  38. $sql = "SELECT count(*) as c FROM gamePlayers WHERE gameId = $gameId AND status NOT LIKE 'DECLINED'";
  39. $result = $conn->query($sql);
  40. while ($data = $result->fetch_assoc()) {
  41. if ($data['c'] == 1) { // Alla utom den som startade spelet har nekat, sätt status till declined på game
  42. $sql = "UPDATE game SET status = 'DECLINED' WHERE id = $gameId";
  43. $result = $conn->query($sql);
  44. if (!$result) {
  45. echo "UPDATE game status failed " . $conn->error;
  46. }
  47. }
  48. }
  49. }
  50. } else if ($callFunction === "accept") {
  51. $sql = "UPDATE gamePlayers SET status = 'ACCEPTED' WHERE gameId = $gameId AND playerId = (SELECT id from users WHERE username = '$userName')";
  52. $result = $conn->query($sql);
  53. if (!$result) {
  54. echo $conn->error;
  55. } else {
  56. $sql = "SELECT * FROM gamePlayers WHERE gameId = $gameId";
  57. $result = $conn->query($sql);
  58. $done = true;
  59. $playerIds = array();
  60. while ($data = $result->fetch_assoc()) {
  61. if ($data['status'] != "ACCEPTED") {
  62. $done = false;
  63. } else {
  64. $playerIds[] = $data['playerId'];
  65. }
  66. }
  67. if ($done) {
  68. $sql = "UPDATE game SET status = 'ACTIVE' WHERE id = $gameId";
  69. $result = $conn->query($sql);
  70. if (!$result) {
  71. echo "updating game status active failed " . $conn->error;
  72. }
  73. $questionSql = "SELECT id FROM questions ORDER BY RAND() LIMIT 1";
  74. $questionIdResult = $conn->query($questionSql);
  75. $data = $questionIdResult->fetch_assoc();
  76. $values = "";
  77. foreach ($playerIds AS $playerId) {
  78. $values .= "($gameId, (SELECT username FROM users WHERE id = $playerId), " . $data['id'] . "),";
  79. }
  80. $values = rtrim($values, ",");
  81. $insertRandomStartQuestion = "INSERT INTO usersLockedQuestions (gameId, playerName, questionId) VALUES $values";
  82. $result = $conn->query($insertRandomStartQuestion);
  83. if (!$result) {
  84. echo "Something wrong with inserting starting question error: " . $conn->error;
  85. }
  86. }
  87. }
  88. } else if ($callFunction === "SetLastPlayed") {
  89. $sql = "UPDATE game SET lastPlayedDate = NOW() WHERE id = $gameId";
  90. $result = $conn->query($sql);
  91. if (!$result) {
  92. echo "Updating lastPlayedDate failed " . $conn->error;
  93. }
  94. } else if ($callFunction === "SetQuestionsLost") {
  95. $questionsLost = $_POST['questionsLost'];
  96. $sql = "UPDATE gamePlayers SET questionsLost = $questionsLost WHERE gameId = $gameId AND playerId = (SELECT id from users WHERE name = '$userName')";
  97. $result = $conn->query($sql);
  98. if (!$result) {
  99. echo "Updating questionsLost resulted in error: " . $conn->error;
  100. }
  101. } else if ($callFunction === "DeleteGame") {
  102. $sql = "DELETE FROM game WHERE id = $gameId";
  103. $result = $conn->query($sql);
  104. if (!$result) {
  105. echo "Failed to delete game with id $gameId - error: " . $conn->error;
  106. }
  107. $sql = "DELETE FROM gamePlayers WHERE gameId = $gameId";
  108. $result = $conn->query($sql);
  109. if (!$result) {
  110. echo "Failed to delete gamePlayers with id $gameId - error: " . $conn->error;
  111. }
  112. } else if ($callFunction === "CurrentPlayer") {
  113. $sql = "SELECT currentPlayer FROM game WHERE id = $gameId";
  114. $result = $conn->query($sql);
  115. if (!$result) {
  116. echo "Failed to get current player for game with id $gameId";
  117. } else {
  118. if ($result->num_rows > 0) {
  119. $returnArray = array();
  120. $i = 0;
  121. while ($data = $result->fetch_assoc()) {
  122. $currentPlayer = $data['currentPlayer'];
  123. }
  124. echo $currentPlayer;
  125. }
  126. }
  127. } else if ($callFunction === "SetCurrentPlayer") {
  128. $currentPlayer = $_POST['currentPlayer'];
  129. $sql = "UPDATE game SET currentPlayer = '$currentPlayer' WHERE id = $gameId";
  130. $result = $conn->query($sql);
  131. if (!$result) {
  132. echo "Failed to update current player for game with id $gameId - error: " . $conn->error;
  133. }
  134. } else if ($callFunction === "GetPlayerPoints") {
  135. $sql = "SELECT userLockedQuestions FROM game WHERE gameId = $gameId AND playerId = (SELECT id FROM users WHERE name = '$userName')";
  136. $result = $conn->query($sql);
  137. $data = $result->fetch_assoc();
  138. echo $data['userLockedQuestions'];
  139. } else if ($callFunction === "SetFinishedDate") {
  140. $finishedDate = $_POST['finishedDate'];
  141. $sql = "UPDATE game SET finishedDate = '$finishedDate' WHERE id = $gameId";
  142. $result = $conn->query($sql);
  143. if (!$result) {
  144. echo "Failed to update current player for game with id $gameId - error: " . $conn->error;
  145. }
  146. } else if ($callFunction === "SetRound") {
  147. $round = $_POST['round'];
  148. $sql = "UPDATE game SET round = '$round' WHERE id = $gameId";
  149. $result = $conn->query($sql);
  150. if (!$result) {
  151. echo "Failed to update current player for game with id $gameId - error: " . $conn->error;
  152. }
  153. } else if ($callFunction === "GetRound") {
  154. $sql = "SELECT round FROM game WHERE id = $gameId";
  155. $result = $conn->query($sql);
  156. $data = $result->fetch_assoc();
  157. echo $data['round'];
  158. } else if ($callFunction === "GetPlayers") {
  159. $sql = "SELECT username, userLockedQuestions FROM gamePlayers INNER JOIN users ON users.id = gamePlayers.playerId WHERE gameId = $gameId";
  160. $result = $conn->query($sql);
  161. $returnArray = array();
  162. $i = 0;
  163. while ($data = $result->fetch_assoc()) {
  164. foreach ($data as $key => $value) {
  165. $returnArray[$i][$key] = $value;
  166. }
  167. $i++;
  168. }
  169. echo json_encode($returnArray);
  170. } else if ($callFunction === "GetQuestionsLost") {
  171. $userName = $conn->real_escape_string($_POST['userName']);
  172. $sql = "SELECT questionsLost FROM gamePlayers WHERE gameId = $gameId AND playerId = (SELECT id from users WHERE username = '$userName')";
  173. $result = $conn->query($sql);
  174. $data = $result->fetch_assoc();
  175. echo $data['questionsLost'];
  176. } else if ($callFunction === "GetWinCondition") {
  177. $sql = "SELECT winNumber FROM game WHERE id = $gameId";
  178. $result = $conn->query($sql);
  179. $data = $result->fetch_assoc();
  180. echo $data['winNumber'];
  181. } else if ($callFunction === "SavePlayerQuestions") {
  182. $userName = $conn->real_escape_string($_POST['userName']);
  183. $questionIds = $conn->real_escape_string($_POST['questionsToSave']);
  184. $questionIdArray = explode(",",$questionIds);
  185. $values = "";
  186. foreach($questionIdArray as $qId) {
  187. $values .= "('$userName', $qId, $gameId),";
  188. }
  189. $values = rtrim($values, ',');
  190. $sql = "INSERT INTO usersLockedQuestions (playerName, questionId, gameId) VALUES $values ON DUPLICATE KEY UPDATE playerName = '$userName', gameId = $gameId";
  191. $result = $conn->query($sql);
  192. if (!$result) {
  193. echo "ERROR while svaing player questions for game $gameId and player $userName with error " . $conn->error . " from sql $sql";
  194. }
  195. $sql = "UPDATE gamePlayers SET userLockedQuestions = (SELECT count(*) FROM usersLockedQuestions WHERE gameId = $gameId AND playerName = '$userName') WHERE playerId = (SELECT id FROM users WHERE username = '$userName' AND gameId = $gameId)";
  196. $conn->query($sql);
  197. }
  198. $conn->close();
  199. ?>