table GAME // le nombre de réponses => table QUESTION // le nombre de bonne réponses => table LINK_GAME_QUESTION //Récupération de la durée $length = self::getLengthByGame($game_id); //Récupération du nombre de questions $nb_question = self::getNbQuestion($game_id); //Récupération du nombre de bonne réponses $nb_br = self::getGoodAnswer($game_id); //Calcul du score final $points = ($nb_br[0] / $nb_question[0]) * 100 - ($length[0] / 1000); if ($points < 0) { return 0; } else { return $points; } //On retourne le résultat return $points; } /** * @brief Obtient le nombre de bonnes réponses dans une partie * @arg $game_id identifiant de la partie * @return int */ public static function getGoodAnswer($game_id) { //Récupération de la base de données $bdd = bdd::getInstance()->getPDO(); //Mise en place de la requête $query = "SELECT SUM(lnk.reponse = question.bonnereponse) AS sum FROM link_game_question AS lnk INNER JOIN question ON lnk.question_id = question.id WHERE lnk.game_id = '" . $game_id . "'"; //Récupération des résultat $data = $bdd->query($query)->fetch(); //On renvoie les données return $data; } /** * @brief Obtient le nombre de questions associées à une partie * @arg $game_id identifiant de la partie * @return int */ public static function getNbQuestion($game_id) { //Récupération de la BDD $bdd = bdd::getInstance()->getPDO(); //Création de la requête $query = "SELECT COUNT(*) AS nb FROM link_game_question AS lnk INNER JOIN question ON lnk.question_id = question.id WHERE lnk.game_id = '" . $game_id . "'"; //Récupération des résultats $data = $bdd->query($query)->fetch(); //On renvoie les infos return $data; } /** * @brief Obtient les identifiants des parties jouées par un joueur * @arg $login login du joueur * @return tableau d'entier */ public static function getGamesByLogin($login) { //Mise en place de la connexion à la base de données $bdd = bdd::getInstance()->getPDO(); //Mise en place de la requête $query = "SELECT id FROM game WHERE user_login = '$login'"; //Récupération des résultats $result = $bdd->query($query)->fetchAll(); //On renvoi les résultats return $result; } /** * @brief Obtient la durée d'une partie * @arg $game_id identifiant de la partie * @return int (temps en milliseconde) */ public static function getLengthByGame($game_id) { //Mise en place de la connexion à la base de données $bdd = bdd::getInstance()->getPDO(); //Mise en place de la requête $query = "SELECT length FROM game ORDER BY id = '$game_id'"; //Récupération du résultat $result = $bdd->query($query)->fetch(); //On renvoie les résultats return $result; } /** * @brief Obtient la liste de toutes les personnes inscrites * @return tableau de login */ public static function getAllPlayer() { //Mise en place de la connexion à la base de données $bdd = bdd::getInstance()->getPDO(); //Mise en place de la requête $query = "SELECT login FROM user ORDER BY login ASC"; //Récupération des résultats $result = $bdd->query($query)->fetchAll(); //On renvoie les résultats return $result; } /** * @brief Obtient le nom de la catégorie et les 2 réponses du groupe de question associé à l'identifiant de la partie * @arg $game_id identifiant de la partie * @return array[categorie, reponse0, reponse1] */ public static function getInfoByGroupId($game_id) { //Récupếration de la connexion à la base de données $bdd = bdd::getInstance()->getPDO(); //Création de la requête $query = "SELECT categorie_nom AS categorie, reponse0, reponse1 FROM `group` WHERE `id`= (SELECT group_id FROM question WHERE `id` = (SELECT question_id FROM link_game_question WHERE game_id = '$game_id' LIMIT 1) LIMIT 1) LIMIT 1"; //Récupération des résultats $result = $bdd->query($query)->fetch(); //On renvoie les données return $result; } /** * @brief Obtient les parties jouée par un joueur dans une catégorie * @arg $login login du joueur * @arg $cat catégorie désirée * @return tableau contenant l'id, le temps et le login de la partie */ public static function getGameByLoginByCat($login, $cat) { //Mise en place de la BDD $bdd = bdd::getInstance()->getPDO(); //Mise en place de la requête $query = "SELECT * FROM game WHERE game.user_login = '$login' AND game.id = ANY( SELECT lnk.game_id FROM link_game_question AS lnk INNER JOIN question ON lnk.question_id = question.id INNER JOIN `group` ON question.group_id = group.id INNER JOIN categorie ON `group`.categorie_nom = categorie.nom WHERE categorie.nom = '$cat' GROUP BY lnk.game_id )"; //Récupération des résultats $result = $bdd->query($query)->fetchAll(); //On renvoie les résultats return $result; } } ?>