prepare("SELECT * FROM `documents` WHERE `file_id` = ?;"); $req->execute([htmlspecialchars($id)]); $data = $req->fetch(); if ($data === false) return null; return self::fromData($data); } public static function fromData($data) { $doc = new Document(); $doc->fill($data); return $doc; } private function fill($data) { $this->file_id = $data["file_id"]; $this->user_id = $data["user"]; $this->team_id = $data["team"]; $this->tournament_id = $data["tournament"]; $this->type = DocumentType::fromName($data["type"]); $this->uploaded_at = $data["uploaded_at"]; $this->version = isset($data["version"]) ? $data["version"] : 1; } public function getFileId() { return $this->file_id; } public function getUserId() { return $this->user_id; } public function getTeamId() { return $this->team_id; } public function getTournamentId() { return $this->tournament_id; } public function getType() { return $this->type; } public function getUploadedAt() { return $this->uploaded_at; } public function getVersion() { return $this->version; } } class Solution { private $file_id; private $team_id; private $tournament_id; private $problem; private $uploaded_at; private $version; private function __construct() {} public static function fromId($id) { global $DB; $req = $DB->prepare("SELECT * FROM `solutions` WHERE `file_id` = ?;"); $req->execute([htmlspecialchars($id)]); $data = $req->fetch(); if ($data === false) return null; return self::fromData($data); } public static function fromData($data) { $sol = new Solution(); $sol->fill($data); return $sol; } private function fill($data) { $this->file_id = $data["file_id"]; $this->team_id = $data["team"]; $this->tournament_id = $data["tournament"]; $this->problem = $data["problem"]; $this->uploaded_at = $data["uploaded_at"]; $this->version = isset($data["version"]) ? $data["version"] : 1; } public function getFileId() { return $this->file_id; } public function getTeamId() { return $this->team_id; } public function getTournamentId() { return $this->tournament_id; } public function getProblem() { return $this->problem; } public function getUploadedAt() { return $this->uploaded_at; } public function getVersion() { return $this->version; } } class Synthesis { private $file_id; private $team_id; private $tournament_id; private $dest; private $uploaded_at; private $version; private function __construct() {} public static function fromId($id) { global $DB; $req = $DB->prepare("SELECT * FROM `syntheses` WHERE `file_id` = ?;"); $req->execute([htmlspecialchars($id)]); $data = $req->fetch(); if ($data === false) return null; return self::fromData($data); } public static function fromData($data) { $synthese = new Synthesis(); $synthese->fill($data); return $synthese; } private function fill($data) { $this->file_id = $data["file_id"]; $this->team_id = $data["team"]; $this->tournament_id = $data["tournament"]; $this->dest = DestType::fromName($data["dest"]); $this->uploaded_at = $data["uploaded_at"]; $this->version = isset($data["version"]) ? $data["version"] : 1; } public function getFileId() { return $this->file_id; } public function getTeamId() { return $this->team_id; } public function getTournamentId() { return $this->tournament_id; } public function getDest() { return $this->dest; } public function getUploadedAt() { return $this->uploaded_at; } public function getVersion() { return $this->version; } } class DestType { const DEFENSEUR = 0; const OPPOSANT = 1; const RAPPORTEUR = 2; public static function getTranslatedName($status) { switch ($status) { case self::OPPOSANT: return "Opposant"; case self::RAPPORTEUR: return "Rapporteur"; default: return "Défenseur"; } } public static function getName($status) { switch ($status) { case self::OPPOSANT: return "OPPOSANT"; case self::RAPPORTEUR: return "RAPPORTEUR"; default: return "DEFENSEUR"; } } public static function fromName($name) { switch ($name) { case "OPPOSANT": return self::OPPOSANT; case "RAPPORTEUR": return self::RAPPORTEUR; default: return self::DEFENSEUR; } } } class DocumentType { const PARENTAL_CONSENT = 0; const PHOTO_CONSENT = 1; const SANITARY_PLUG = 2; const SOLUTION = 3; const SYNTHESIS = 4; public static function getTranslatedName($type) { switch ($type) { case self::PARENTAL_CONSENT: return "Autorisation parentale"; case self::PHOTO_CONSENT: return "Autorisation de droit à l'image"; case self::SANITARY_PLUG: return "Fiche sanitaire"; case self::SOLUTION: return "Solution"; default: return "Note de synthèse"; } } public static function getName($type) { switch ($type) { case self::PARENTAL_CONSENT: return "PARENTAL_CONSENT"; case self::PHOTO_CONSENT: return "PHOTO_CONSENT"; case self::SANITARY_PLUG: return "SANITARY_PLUG"; case self::SOLUTION: return "SOLUTION"; default: return "SYNTHESIS"; } } public static function fromName($name) { switch ($name) { case "PARENTAL_CONSENT": return self::PARENTAL_CONSENT; case "PHOTO_CONSENT": return self::PHOTO_CONSENT; case "SANITARY_PLUG": return self::SANITARY_PLUG; case "SOLUTION": return self::SOLUTION; default: return self::SYNTHESIS; } } }