From 3b54b75395ac24f7d7935dfc1b9a82fdc8189c43 Mon Sep 17 00:00:00 2001 From: galaxyoyo Date: Fri, 20 Sep 2019 14:57:06 +0200 Subject: [PATCH] Phase 2 : questions (en cours) --- dispatcher.php | 3 + server_files/classes/Document.php | 26 ------ server_files/classes/DocumentType.php | 28 ++++++ server_files/classes/Question.php | 91 ++++++++++++++++++++ server_files/controllers/calendrier.php | 3 - server_files/controllers/poser_questions.php | 69 +++++++++++++++ server_files/views/header.php | 3 + server_files/views/poser_questions.php | 37 ++++++++ 8 files changed, 231 insertions(+), 29 deletions(-) create mode 100644 server_files/classes/DocumentType.php create mode 100644 server_files/classes/Question.php create mode 100644 server_files/controllers/poser_questions.php create mode 100644 server_files/views/poser_questions.php diff --git a/dispatcher.php b/dispatcher.php index 631f596..fa1de82 100644 --- a/dispatcher.php +++ b/dispatcher.php @@ -3,7 +3,9 @@ require_once "server_files/config.php"; require_once "server_files/classes/Document.php"; +require_once "server_files/classes/DocumentType.php"; require_once "server_files/classes/Phase.php"; +require_once "server_files/classes/Question.php"; require_once "server_files/classes/Reason.php"; require_once "server_files/classes/Role.php"; require_once "server_files/classes/SchoolClass.php"; @@ -45,6 +47,7 @@ $ROUTES["^inscription/?$"] = ["server_files/controllers/inscription.php"]; $ROUTES["^mon-compte/?$"] = ["server_files/controllers/mon_compte.php"]; $ROUTES["^mon-equipe/(modifier)/?$"] = ["server_files/controllers/mon_equipe.php", "modifier"]; $ROUTES["^mon-equipe/?$"] = ["server_files/controllers/mon_equipe.php"]; +$ROUTES["^poser-questions-2$"] = ["server_files/controllers/poser_questions.php"]; $ROUTES["^probleme/([1-4])/?$"] = ["server_files/controllers/probleme.php", "probleme"]; $ROUTES["^rejoindre_equipe/?$"] = ["server_files/controllers/rejoindre_equipe.php"]; $ROUTES["^videos-solutions/?$"] = ["server_files/controllers/videos_solutions.php"]; diff --git a/server_files/classes/Document.php b/server_files/classes/Document.php index 7241076..2c14f08 100644 --- a/server_files/classes/Document.php +++ b/server_files/classes/Document.php @@ -96,29 +96,3 @@ class Document return $docs; } } - -class DocumentType -{ - const PHOTO_CONSENT = 0; - - public static function getTranslatedName($type) { - switch ($type) { - default: - return "Autorisation de droit à l'image"; - } - } - - public static function getName($type) { - switch ($type) { - default: - return "PHOTO_CONSENT"; - } - } - - public static function fromName($name) { - switch ($name) { - default: - return self::PHOTO_CONSENT; - } - } -} \ No newline at end of file diff --git a/server_files/classes/DocumentType.php b/server_files/classes/DocumentType.php new file mode 100644 index 0000000..87b2c06 --- /dev/null +++ b/server_files/classes/DocumentType.php @@ -0,0 +1,28 @@ +prepare("SELECT * FROM `questions` WHERE `id` = ?;"); + $req->execute(htmlspecialchars($id)); + $data = $req->fetch(); + + if ($data === false) + return null; + + $question = new Question(); + $question->fill($data); + return $question; + } + + public function fill($data) + { + foreach ($data as $key => $value) + $this->$key = $value; + } + + public static function getQuestions(Team $from, Team $to) + { + global $DB; + + ensure($from->getProblem() == $to->getProblem(), "Les deux équipes doivent travailler sur le même problème."); + + $req = $DB->prepare("SELECT * FROM `questions` WHERE `from` = ? AND `to` = ?;"); + $req->execute([$from->getId(), $to->getId()]); + + $questions = []; + + while (($data = $req->fetch()) !== false) { + $question = new Question(); + $question->fill($data); + $questions[] = $question; + } + + if (sizeof($questions) == 0) { + $default_questions = ["Slogan ?", "Est-ce que les blagues de R-ev sont drôles ?", "C'est où le WEI ?", "Qui est le plus lourd ?", "Quelle est la réponse à la vie, à l'univers et à tout le reste ?", "Que préférez-vous entre la pratique et la théorie ?"]; + for ($_ = 0; $_ < 6; ++$_) { + $req = $DB->prepare("INSERT INTO `questions`(`from`, `to`, `problem`, `question`) VALUES (?, ?, ?, ?);"); + $req->execute([$from->getId(), $to->getId(), $from->getProblem(), $default_questions[$_]]); + } + return self::getQuestions($from, $to); + } + + return $questions; + } + + public function getId() + { + return $this->id; + } + + public function getFrom() + { + return $this->from; + } + + public function getTo() + { + return $this->to; + } + + public function getProblem() + { + return $this->problem; + } + + public function getQuestion() + { + return $this->question; + } +} \ No newline at end of file diff --git a/server_files/controllers/calendrier.php b/server_files/controllers/calendrier.php index de75fef..1db0176 100644 --- a/server_files/controllers/calendrier.php +++ b/server_files/controllers/calendrier.php @@ -1,8 +1,5 @@ makeVerifications(); + $give_questions->giveQuestions(); + } catch (AssertionError $e) { + $has_error = true; + $error_message = $e->getMessage(); + } +} + +class GiveQuestions +{ + private $to; + private $to_team; + private $question_0; + private $question_1; + private $question_2; + private $question_3; + private $question_4; + private $question_5; + + public function __construct($data) + { + foreach ($data as $key => $value) { + $this->$key = $value; + } + } + + public function makeVerifications() + { + $this->to_team = Team::fromId($this->to); + ensure($this->to_team, "L'équipe indiquée n'existe pas."); + } + + public function giveQuestions() + { + global $DB, $team; + + $DB->exec("DELETE FROM `questions` WHERE `from` = " . $team->getId() . " AND `to` = $this->to;"); + } +} + +/** + * @var Team[] $receivers + * @var Video[] $videos + * @var Question[][] $questions + */ +$receivers = [Team::fromId($team->getVideoTeamIds()[0]), Team::fromId($team->getVideoTeamIds()[1])]; +$videos = [Video::getVideo(Reason::SOLUTION, $receivers[0], Video::ACCEPTED), + Video::getVideo(Reason::SOLUTION, $receivers[1], Video::ACCEPTED)]; +$questions = [Question::getQuestions($team, $receivers[0]), + Question::getQuestions($team, $receivers[1])]; + +require_once "server_files/views/poser_questions.php"; \ No newline at end of file diff --git a/server_files/views/header.php b/server_files/views/header.php index 152490f..c32dfd5 100644 --- a/server_files/views/header.php +++ b/server_files/views/header.php @@ -60,6 +60,9 @@ case Phase::PHASE1: ?>
  • Envoyer ma vidéo (phase 1)
  • +
  • Poser des questions (phase 2)
  • + diff --git a/server_files/views/poser_questions.php b/server_files/views/poser_questions.php new file mode 100644 index 0000000..309bc3c --- /dev/null +++ b/server_files/views/poser_questions.php @@ -0,0 +1,37 @@ + +

    Questions pour l'équipe getName() ?> (getTrigram() ?>) :

    + Lien de la vidéo : getLink() ?>
    + getLink()) ?> +
    +
    + + + + + + + + + + + + + +
    + + + +
    + +
    +
    +
    +