182 lines
3.9 KiB
PHP
182 lines
3.9 KiB
PHP
<?php
|
|
|
|
|
|
class Question
|
|
{
|
|
private $id;
|
|
private $from;
|
|
private $to;
|
|
private $problem;
|
|
private $number;
|
|
private $question;
|
|
private $attached_file;
|
|
private $answer;
|
|
private $attached_file_answer;
|
|
|
|
private function __construct()
|
|
{
|
|
}
|
|
|
|
public static function fromId($id)
|
|
{
|
|
global $DB;
|
|
|
|
$req = $DB->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`;");
|
|
$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 = ["Comment avez-vous obtenu vos résultats ?",
|
|
"Peut-on rendre votre algorithme plus efficace ? Pourquoi ?",
|
|
"Comment élargir vos travaux ?",
|
|
null,
|
|
null,
|
|
null];
|
|
for ($i = 0; $i < 6; ++$i) {
|
|
$req = $DB->prepare("INSERT INTO `questions`(`from`, `to`, `problem`, `number`, `question`) VALUES (?, ?, ?, ?, ?);");
|
|
$req->execute([$from->getId(), $to->getId(), $from->getProblem(), $i, $default_questions[$i]]);
|
|
}
|
|
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]);
|
|
}
|
|
} |