ChasseTresorPange/answer.php

63 lines
2.1 KiB
PHP
Raw Normal View History

<?php
require_once "require/base.php";
$database = new Database();
$bonus = $database->getArticleNb(); // L'énigme bonus est la dernière
if (isset($_GET["code"]) && isset($_GET["team"]) && isset($_GET["id"])) {
$team_id = htmlspecialchars($_GET["team"]);
// Vérification de l'existence du groupe :
if ($database->checkTeamExists($team_id)) {
$art_id = htmlspecialchars($_GET["id"]);
$code = htmlspecialchars($_GET["code"]);
$article = $database->getArticle($art_id);
// Données renvoyées :
$data = [
"valid_qr" => false,
"hint" => ""
];
// Vérification de la combinaison ID énigme + code :
if (!$database->checkPuzzle($art_id, $code)) {
$data["hint"] = $article["hint"];
}
else {
// On enregistre la réussite dans la table :
// Vérification que ce n'est pas déjà enregistré
// Si ce n'est pas le cas, on enregistre :
if (!$database->isPuzzleSolved($art_id, $team_id)) {
$database->solvePuzzle($art_id, $team_id);
}
// On ajoute l'énigme bonus si toutes les autres sont résolues :
$stmt = $database->pdo_teams->prepare("SELECT COUNT(*) FROM solved WHERE team_id == :team_id");
$stmt->bindValue(":team_id", $team_id);
$stmt->execute();
if ($stmt->fetchAll()[0]["COUNT(*)"] == $bonus - 1) {
$stmt = $database->pdo_teams->prepare("UPDATE teams SET bonus = 1 WHERE id = :team_id");
$stmt->bindValue(":team_id", $team_id);
$stmt->execute();
}
$data["valid_qr"] = true;
}
header("Content-Type: application/json; charset=utf-8");
echo json_encode($data);
}
else {
header("Location: index.php");
die();
}
}
else {
header("Location: index.php");
die();
}
?>