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 static function fromAttachedFile($attached_file) { global $DB; $req = $DB->prepare("SELECT * FROM `questions` WHERE `attached_file` = ? OR `attached_file_answer` = ?;"); $req->execute([htmlspecialchars($attached_file), htmlspecialchars($attached_file)]); $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` = ? ORDER BY `from`, `number`;"); $req->execute([$from->getId(), $to->getId()]); $questions = []; while (($data = $req->fetch()) !== false) { $question = new Question(); $question->fill($data); $questions[] = $question; } if (sizeof($questions) == 0) { $req = $DB->prepare("INSERT INTO `questions`(`from`, `to`, `problem`, `number`, `question`) VALUES (?, ?, ?, ?, ?);"); $req->execute([$from->getId(), $to->getId(), $from->getProblem(), 0, ""]); for ($i = 1; $i <= 6; ++$i) { $req = $DB->prepare("INSERT INTO `questions`(`from`, `to`, `problem`, `number`, `question`) VALUES (?, ?, ?, ?, ?);"); $req->execute([$from->getId(), $to->getId(), $from->getProblem(), $i, self::DEFAULT_QUESTIONS[$i - 1]]); } return self::getQuestions($from, $to); } return $questions; } public static function getQuestionsTo(Team $to) { global $DB, $YEAR; $id = $to->getId(); $req = $DB->query("SELECT `id` from `teams` WHERE (`video_team1` = $id OR `video_team2` = $id) AND `year` = $YEAR;"); $questions = []; while (($data = $req->fetch()) !== false) $questions[] = self::getQuestions(Team::fromId($data["id"]), $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 getNumber() { return $this->number; } public function getQuestion() { return $this->question; } public function setQuestion($question) { global $DB; $this->question = $question; $req = $DB->prepare("UPDATE `questions` SET `question` = ? WHERE `id` = ?;"); $req->execute([$question, $this->id]); } public function getAttachedFile() { return $this->attached_file; } public function setAttachedFile($attached_file) { global $DB; $this->attached_file = $attached_file; $req = $DB->prepare("UPDATE `questions` SET `attached_file` = ? WHERE `id` = ?;"); $req->execute([$attached_file, $this->id]); } public function getAnswer() { return $this->answer; } public function setAnswer($answer) { global $DB; $this->answer = $answer; $req = $DB->prepare("UPDATE `questions` SET `answer` = ? WHERE `id` = ?;"); $req->execute([$answer, $this->id]); } public function getAttachedFileAnswer() { return $this->attached_file_answer; } public function setAttachedFileAnswer($attached_file) { global $DB; $this->attached_file_answer = $attached_file; $req = $DB->prepare("UPDATE `questions` SET `attached_file_answer` = ? WHERE `id` = ?;"); $req->execute([$attached_file, $this->id]); } }