mirror of
				https://gitlab.com/animath/si/plateforme-corres2math.git
				synced 2025-11-04 11:52:27 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			185 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			185 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
class Question
 | 
						|
{
 | 
						|
	const DEFAULT_QUESTIONS = ["Comment avez-vous obtenu vos résultats ?",
 | 
						|
				"Peut-on rendre votre algorithme plus efficace ? Pourquoi ?",
 | 
						|
				"Comment élargir vos travaux ?",
 | 
						|
				null,
 | 
						|
				null,
 | 
						|
				null];
 | 
						|
 | 
						|
	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`, `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]);
 | 
						|
	}
 | 
						|
} |