Créé dans le cadre du projet de fin d'année de la promo 2018 de CIR2 de l'ISEN Brest/Rennes, le Burger Quizz est une adaptation numérique du jeu télévisé éponyme, plus précisément d'une épreuve spécifique de ce jeu : le "Sel ou Poivre".

class.score.php 6.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. /*******************************************************************************
  3. * Classe Score *
  4. * Auteur : Brendan Abolivier *
  5. * Fonction : Gérer l'affichage et l'insertion de scores *
  6. * *
  7. * Attribut : *
  8. * $bdd : Connector *
  9. * $login : String *
  10. * $score : Int *
  11. * *
  12. * Méthodes : *
  13. * __construct() *
  14. * getLogin() *
  15. * getScore() *
  16. * getScores() [statique] *
  17. * add() [statique] *
  18. *******************************************************************************/
  19. class Score {
  20. private $bdd;
  21. private $login;
  22. private $score;
  23. /*****************************************************************************
  24. * Méthode __construct() *
  25. * Fonction : Charge un score d'après le login de son auteur *
  26. * *
  27. * Paramètres : *
  28. * $login (String) : Login de l'auteur du score *
  29. * *
  30. * Retour : Aucun *
  31. *****************************************************************************/
  32. function __construct($login) {
  33. $this->bdd = new Connector();
  34. $options = array(
  35. "where" => array(
  36. array("login", "=", $login)
  37. )
  38. );
  39. $data = $this->bdd->Select("*", "scores", $options);
  40. $this->login = $data[0]['login'];
  41. $this->score = $data[0]['score'];
  42. }
  43. /*****************************************************************************
  44. * Méthode getLogin() *
  45. * Fonction : Renvoie le login associé au score courant *
  46. * *
  47. * Paramètres : Aucun *
  48. * *
  49. * Retour : *
  50. * Chaîne de caractères contenant le login associé au score courant *
  51. *****************************************************************************/
  52. function getLogin() {
  53. return $this->login;
  54. }
  55. /*****************************************************************************
  56. * Méthode getScore() *
  57. * Fonction : Renvoie le score de l'objet courant *
  58. * *
  59. * Paramètres : Aucun *
  60. * *
  61. * Retour : *
  62. * Entier contenant le score de l'objet courant *
  63. *****************************************************************************/
  64. function getScore() {
  65. return $this->score;
  66. }
  67. /*****************************************************************************
  68. * Méthode getScores() [statique] *
  69. * Fonction : Sélectionne un nombre donné dans les meilleurs ou les pires *
  70. * scores *
  71. * *
  72. * Paramètres : *
  73. * $nRows (Int) : Nombre de lignes à sélectionner (nombre de scores à *
  74. * retourner) *
  75. * $direction (String) : Si vaut "desc", sélectionne par ordre décroissant *
  76. * (les n meilleurs scores) ; si vaut "asc", *
  77. * sélectionne par ordre croissant (les n pires *
  78. * scores) *
  79. * *
  80. * Retour : *
  81. * Tableau de n objets Score *
  82. *****************************************************************************/
  83. public static function getScores($nRows, $direction = "desc") {
  84. $bdd = new Connector();
  85. $options = array(
  86. "order by" => array("score", $direction),
  87. "limit" => array($nRows)
  88. );
  89. $array = $bdd->Select("*", "scores", $options);
  90. $scores = array();
  91. foreach($array as $score) {
  92. array_push($scores, new Score($score['login']));
  93. }
  94. return $scores;
  95. }
  96. /*****************************************************************************
  97. * Méthode add() [statique] *
  98. * Fonction : Ajoute un score dans la base de données *
  99. * *
  100. * Paramètres : *
  101. * $login (String) : Login de l'auteur du score à ajouter *
  102. * $score (Int) : Score à ajouter *
  103. * *
  104. * Retour : Aucun *
  105. * *
  106. * Exceptions : *
  107. * higher_score_present : Un score supérieur existe déjà pour ce login dans *
  108. * la base de données *
  109. *****************************************************************************/
  110. public static function add($login, $score) {
  111. $bdd = new Connector();
  112. $options = array(
  113. "where" => array(
  114. array("login", "=", $login)
  115. )
  116. );
  117. if(!$scores = $bdd->Select("*", "scores", $options)) {
  118. $values = array(
  119. "login" => $login,
  120. "score" => $score
  121. );
  122. $bdd->Insert("scores", $values);
  123. } else {
  124. if($score > $scores[0]['score']) {
  125. $update = array(
  126. "where" => array(
  127. array("login", "=", $login)
  128. ),
  129. "set" => array("score" => $score)
  130. );
  131. $bdd->Update("scores", $update);
  132. } else {
  133. throw new Exception('higher_score_present');
  134. }
  135. }
  136. }
  137. }