plateforme-corres2math/server_files/classes/Question.php

135 lines
2.9 KiB
PHP
Raw Normal View History

2019-09-20 12:57:06 +00:00
<?php
class Question
{
private $id;
private $from;
private $to;
private $problem;
private $number;
2019-09-20 12:57:06 +00:00
private $question;
private $attached_file;
2019-09-20 12:57:06 +00:00
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` = ?;");
$req->execute([htmlspecialchars($attached_file)]);
$data = $req->fetch();
if ($data === false)
return null;
$question = new Question();
$question->fill($data);
return $question;
}
2019-09-20 12:57:06 +00:00
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 getNumber()
{
return $this->number;
}
2019-09-20 12:57:06 +00:00
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]);
}
2019-09-20 12:57:06 +00:00
}