114 lines
4.0 KiB
PHP
114 lines
4.0 KiB
PHP
<?php
|
|
require_once "require/base.php";
|
|
|
|
$article = array();
|
|
$solved = false;
|
|
$team_id = -1;
|
|
$art_id = -1;
|
|
|
|
$database = new Database();
|
|
|
|
$max_art = $database->getArticleNb();
|
|
|
|
if (isset($_GET["id"]) && isset($_GET["team"])) {
|
|
$art_id = htmlspecialchars($_GET["id"]);
|
|
$team_id = htmlspecialchars($_GET["team"]);
|
|
|
|
// Recherche de l'énigme indiquée dans la base :
|
|
$stmt = $database->pdo_article->prepare("SELECT * FROM puzzles WHERE id == :id");
|
|
$stmt->bindValue(":id", $art_id);
|
|
$stmt->execute();
|
|
$article = $stmt->fetch();
|
|
|
|
// Vérification de l'existence du groupe et de l'énigme :
|
|
if (empty($article) || !$database->checkTeamExists($team_id)) {
|
|
header("Location: index.php");
|
|
die();
|
|
}
|
|
|
|
else {
|
|
// On vérifie si l'énigme bonus n'est pas débloquée :
|
|
if (!$database->checkTeamBonus($team_id)) {
|
|
// Si c'est celle qui est sélectionnée, on retourne à la liste des énigmes :
|
|
if ($art_id == $max_art) {
|
|
header("Location: puzzles.php?team=" . $team_id);
|
|
die();
|
|
}
|
|
|
|
// On retire l'énigme bonus du total :
|
|
$max_art--;
|
|
}
|
|
|
|
// On indique si l'énigme est résolue :
|
|
$stmt = $database->pdo_teams->prepare("SELECT * FROM solved WHERE (team_id == :team_id AND puzzle_id == :puzzle_id)");
|
|
$stmt->bindValue(":team_id", $team_id);
|
|
$stmt->bindValue(":puzzle_id", $art_id);
|
|
$stmt->execute();
|
|
$solved = !empty($stmt->fetch());
|
|
}
|
|
}
|
|
|
|
else {
|
|
header("Location: index.php");
|
|
die();
|
|
}
|
|
?>
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<?php
|
|
require_once $rq_path . "head.php";
|
|
?>
|
|
<title><?= $tr["tab_title"]["article"] ?></title>
|
|
<script type="module" src="<?= $rq_path ?>js/qrscan.js"></script>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<?php
|
|
require_once $rq_path . "nav.php";
|
|
?>
|
|
</header>
|
|
<main>
|
|
<header>
|
|
<h1><?= $tr["page_title"]["article"] . $art_id . " : " . $article["title"] ?></h1>
|
|
<h2><?= $article["text"] ?></h2>
|
|
<section>
|
|
<a href="puzzles.php?team=<?= $team_id ?>">
|
|
<button><?= $tr["article"]["back_but"] ?></button>
|
|
</a>
|
|
<a href="article.php?team=<?= $team_id ?>&id=<?= ($art_id % $max_art) + 1 ?>">
|
|
<button><?= $tr["article"]["next_but"] ?></button>
|
|
</a>
|
|
</section>
|
|
<?php if ($solved) : ?>
|
|
<p><?= $tr["article"]["success"] ?></p>
|
|
<?php else : ?>
|
|
<p><?= $tr["article"]["message"] ?></p>
|
|
<?php endif; ?>
|
|
</header>
|
|
<article>
|
|
<?php if ($solved) : ?>
|
|
<p><?= $article["answer"] ?></p>
|
|
<img src="images/map/puzzles/<?= $article["id"] ?>.png"/>
|
|
<?php else : ?>
|
|
<button><?= $tr["article"]["qr_but"] ?></button>
|
|
<p></p> <!-- Emplacement du message d'erreur JS concernant la caméra. !-->
|
|
<video></video>
|
|
<p><?= $tr["article"]["cam_sel"] ?></p>
|
|
<select>
|
|
<option value="rear" selected><?= $tr["article"]["r_cam"] ?></option>
|
|
<option value="front"><?= $tr["article"]["f_cam"] ?></option>
|
|
</select>
|
|
<!-- <p>Scanner depuis un fichier</p>
|
|
<input type="file" id="file-selector"> -->
|
|
<?php endif; ?>
|
|
</article>
|
|
</main>
|
|
<footer>
|
|
<?php
|
|
require_once $rq_path . "footer.php";
|
|
?>
|
|
</footer>
|
|
</body>
|
|
</html>
|