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.categorie.php 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. /*******************************************************************************
  3. * Classe Categorie *
  4. * Auteur : Brendan Abolivier *
  5. * Fonction : Créer un objet représentatif d'une catégorie *
  6. * *
  7. * Attribut : *
  8. * $bdd : Connector *
  9. * $nomCat : String *
  10. * $questsets : Array (Questset) *
  11. * *
  12. * Méthodes : *
  13. * __construct() *
  14. * randSelect() [statique] *
  15. * getArray() *
  16. *******************************************************************************/
  17. class Categorie {
  18. private $bdd;
  19. private $nomCat;
  20. private $questsets;
  21. /*****************************************************************************
  22. * Méthode __construct() *
  23. * Fonction : Constructeur, crée un objet Categorie à partir de son nom *
  24. * *
  25. * Paramètres : *
  26. * $nomCat (String) : Nom de la catégorie *
  27. * *
  28. * Retour : Aucun *
  29. * *
  30. * Exceptions : *
  31. * cant_find_cat : La catégorie est introuvable dans la base de données *
  32. *****************************************************************************/
  33. function __construct($nomCat) {
  34. $this->bdd = new Connector();
  35. $options = array(
  36. "where" => array(
  37. array("nom_cat", "=", $nomCat)
  38. )
  39. );
  40. if(!is_null($this->bdd->Select('*', 'categorie', $options))) {
  41. $this->nomCat = $nomCat;
  42. } else {
  43. throw new Exception('cant_find_cat');
  44. }
  45. $this->questsets = array();
  46. $options = array(
  47. "where" => array(
  48. array("nom_cat", "=", $this->nomCat)
  49. ),
  50. "order by" => array("rand()"),
  51. "limit" => array("2")
  52. );
  53. $resp = $this->bdd->Select('*', 'reponses', $options);
  54. foreach($resp as $questset) {
  55. array_push($this->questsets, new Questset(array($questset['reponse1'],
  56. $questset['reponse2'])));
  57. }
  58. }
  59. /*****************************************************************************
  60. * Méthode randSelect() [statique] *
  61. * Fonction : Sélectionne aléatoirement deux catégories valides (au moins *
  62. * deux thèmes avec chacun au moins trois questions) *
  63. * *
  64. * Paramètres : Aucun *
  65. * *
  66. * Retour : *
  67. * Tableau contenant deux objets Categorie valides, sélectionnés *
  68. * aléatoirement *
  69. *****************************************************************************/
  70. public static function randSelect() {
  71. $bdd = new Connector();
  72. $options = array(
  73. "order by" => array("rand()"),
  74. );
  75. $arrayCat = $bdd->Select("*", "categorie", $options);
  76. $return = array();
  77. $catIndex = -1;
  78. $previousIndex = -1;
  79. // On retire du tableau les catégories invalides
  80. for($i = 0; $i < sizeof($arrayCat); $i++) {
  81. $category = new Categorie($arrayCat[$i]['nom_cat']);
  82. if(sizeof($category->getArray()['themes']) >=2) {
  83. foreach($category->getArray()['themes'] as $theme) {
  84. if(sizeof($theme['questions']) < 3) {
  85. array_splice($arrayCat, $i, 1);
  86. }
  87. }
  88. } else {
  89. array_splice($arrayCat, $i, 1);
  90. }
  91. }
  92. // On sélectionne deux catégories dans celles restantes
  93. for($i = 0; $i < 2; $i++) {
  94. array_push($return, new Categorie($arrayCat[$i]['nom_cat']));
  95. }
  96. return $return;
  97. }
  98. /*****************************************************************************
  99. * Méthode getArray() *
  100. * Fonction : Renvoie un tableau représentant la catégorie courante *
  101. * *
  102. * Paramètres : Aucun *
  103. * *
  104. * Retour : *
  105. * Tableau contenant le nom de la catégorie, ainsi qu'un tableau des thèmes *
  106. * inclus dans cette dernière (méthode getArray() de la classe Questset) *
  107. *****************************************************************************/
  108. public function getArray() {
  109. $questsets = array();
  110. foreach($this->questsets as $questset) {
  111. array_push($questsets, $questset->getArray());
  112. }
  113. return array(
  114. "nom_cat" => utf8_encode($this->nomCat),
  115. "themes" => $questsets
  116. );
  117. }
  118. }