getRole(); if ($user->getTeamId() !== null) { $team = $_SESSION["team"] = Team::fromId($user->getTeamId()); $_SESSION["tournament"] = Tournament::fromId($team->getTournamentId()); } if (isset($_GET["view-as-admin"])) { if (isset($_SESSION["admin"])) { $_SESSION["user_id"] = $_SESSION["admin"]; unset($_SESSION["admin"]); } header("Location: /"); exit(); } } } function quitTeam($user_id = -1) { global $DB, $URL_BASE; header("Location: $URL_BASE"); /** @var User $user */ $user = $_SESSION["user"]; if ($user_id == -1) $user_id = $user->getId(); else $user = User::fromId($user_id); $role = $user->getRole(); if ($role == Role::ADMIN || $role == Role::ORGANIZER) return; for ($i = 1; $i <= ($role == Role::ENCADRANT ? 3 : 6); ++$i) /** @noinspection SqlResolve */ $DB->exec("UPDATE `teams` SET `" . strtolower(Role::getName($role)) . "_$i` = NULL WHERE `" . strtolower(Role::getName($role)) . "_$i` = $user_id;"); $user->setTeamId(null); $DB->exec("UPDATE `teams` SET `encadrant_1` = `encadrant_2`, `encadrant_2` = NULL WHERE `encadrant_1` IS NULL;"); $DB->exec("UPDATE `teams` SET `encadrant_2` = `encadrant_3`, `encadrant_3` = NULL WHERE `encadrant_2` IS NULL;"); for ($i = 1; $i <= 5; ++$i) { /** @noinspection SqlResolve */ $DB->exec("UPDATE `teams` SET `participant_$i` = `participant_" . strval($i + 1) . "`, `participant_" . strval($i + 1) . "` = NULL WHERE `participant_$i` IS NULL;"); } $req = $DB->query("SELECT `file_id` FROM `documents` WHERE `user` = $user_id;"); while (($data = $req->fetch()) !== false) unlink("$URL_BASE/files/" . $data["file_id"]); $DB->exec("DELETE FROM `documents` WHERE `user` = $user_id;"); if ($DB->exec("DELETE FROM `teams` WHERE `encadrant_1` IS NULL AND `participant_1` IS NULL;") > 0) { $team_id = $user->getTeamId(); $req = $DB->query("SELECT `file_id` FROM `solutions` WHERE `team` = $team_id;"); while (($data = $req->fetch()) !== false) unlink("$URL_BASE/files/" . $data["file_id"]); $DB->exec("DELETE FROM `solutions` WHERE `team` = $team_id;"); $req = $DB->query("SELECT `file_id` FROM `syntheses` WHERE `team` = $team_id;"); while (($data = $req->fetch()) !== false) unlink("$URL_BASE/files/" . $data["file_id"]); $DB->exec("DELETE FROM `syntheses` WHERE `team` = $team_id;"); } $_SESSION["team"] = null; unset($_SESSION["team"]); } function userExists($email) { global $DB, $YEAR; $req = $DB->prepare("SELECT `id` FROM `users` WHERE `email` = ? AND `year` = '$YEAR';"); $req->execute([$email]); return $req->fetch(); } function teamExists($name) { global $DB, $YEAR; $req = $DB->prepare("SELECT `id` FROM `teams` WHERE `name` = ? AND `year` = '$YEAR';"); $req->execute([$name]); return $req->fetch(); } function trigramExists($trigram) { global $DB, $YEAR; $req = $DB->prepare("SELECT `id` FROM `teams` WHERE `trigram` = ? AND `year` = '$YEAR';"); $req->execute([$trigram]); return $req->fetch(); } function tournamentExists($name) { global $DB, $YEAR; $req = $DB->prepare("SELECT `id` FROM `tournaments` WHERE `name` = ? AND `year` = '$YEAR';"); $req->execute([$name]); return $req->fetch(); } function canValidate(Team $team, Tournament $tournament) { global $DB, $YEAR; $can_validate = $team->getValidationStatus() == ValidationStatus::NOT_READY; $can_validate &= $team->getEncadrants()[0] != NULL; $can_validate &= $team->getParticipants()[3] != NULL; // Le TFJM² 2020 se déroulant en ligne, les papiers ne sont plus nécessaires /* for ($i = 1; $i <= 2; ++$i) { if ($team->getEncadrants()[$i - 1] === NULL) continue; $req = $DB->prepare("SELECT COUNT(*) AS `version` FROM `documents` WHERE `user` = ? AND `tournament` = ? AND `type` = ?;"); $req->execute([$team->getEncadrants()[$i - 1], $tournament->getId(), "PHOTO_CONSENT"]); $d = $req->fetch(); $can_validate &= $d["version"] > 0; }*/ // Le TFJM² 2020 se déroulant en ligne, les papiers ne sont plus nécessaires /* for ($i = 1; $i <= 6; ++$i) { if ($team->getParticipants()[$i] === NULL) continue; $req = $DB->prepare("SELECT COUNT(*) AS `version` FROM `documents` WHERE `user` = ? AND `tournament` = ? AND `type` = ?;"); $req->execute([$team->getParticipants()[$i], $tournament->getId(), "PHOTO_CONSENT"]); $d = $req->fetch(); $can_validate &= $d["version"] > 0; $birth_date = $DB->query("SELECT `birth_date` FROM `users` WHERE `id` = " . $team->getParticipants()[$i] . ";")->fetch()["birth_date"]; if ($birth_date > strval($YEAR - 18) . substr($tournament->getStartDate(), 4)) { $req = $DB->prepare("SELECT COUNT(*) AS `version` FROM `documents` WHERE `user` = ? AND `tournament` = ? AND `type` = ?;"); $req->execute([$team->getParticipants()[$i], $tournament->getId(), "PARENTAL_CONSENT"]); $d = $req->fetch(); $can_validate &= $d["version"] > 0; $req = $DB->prepare("SELECT COUNT(*) AS `version` FROM `documents` WHERE `user` = ? AND `tournament` = ? AND `type` = ?;"); $req->execute([$team->getParticipants()[$i], $tournament->getId(), "SANITARY_PLUG"]); $d = $req->fetch(); $can_validate &= $d["version"] > 0; } } */ // La lettre de motivation n'est plus nécessaire, mais existe toujours /* $req = $DB->prepare("SELECT COUNT(*) AS `version` FROM `documents` WHERE `team` = ? AND `tournament` = ? AND `type` = ?;"); $req->execute([$team->getId(), $tournament->getId(), "MOTIVATION_LETTER"]); $d = $req->fetch(); $can_validate &= $d["version"] > 0;*/ $can_validate &= date("Y-m-d H:i:s") <= $tournament->getInscriptionDate(); return $can_validate; } function printDocuments($documents) { if (sizeof($documents) == 0) { echo "