OnlineGames.php 8.1 KB

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