diff --git a/article.php b/article.php index d503f0a..fb73093 100644 --- a/article.php +++ b/article.php @@ -5,6 +5,7 @@ $solved = false; $team_id = -1; $art_id = -1; + $art_index = -1; // Index de l'article dans la liste pzorder assignée à l'équipe $database = new Database(); @@ -27,6 +28,30 @@ } else { + // On cherche l'index de l'article dans la liste pzorder assignée à l'équipe : + $stmt = $database->pdo_teams->prepare("SELECT pzorder FROM teams WHERE id == :id"); + $stmt->bindValue(":id", $team_id); + $stmt->execute(); + $result = $stmt->fetch(); + $order = $result["pzorder"]; + + // Si un ordre d'énigmes n'a pas été défini au préalable pour cette équipe, on en choisit un au hasard : + if (is_null($order)) { + $order = rand(0, sizeof($pzorder)); + $stmt = $database->pdo_teams->prepare("UPDATE teams SET pzorder = :order WHERE id == :id"); + $stmt->bindValue(":id", $team_id); + $stmt->bindValue(":order", $order); + $stmt->execute(); + } + + $pzo_arr = $pzorder[$order]; + $art_index = array_search($art_id, $pzo_arr); + $prev_art = $pzo_arr[$art_index - 1]; + if ($art_index == 0) { + $prev_art = $pzo_arr[$max_art - 1]; + } + $next_art = $pzo_arr[($art_index + 1) % $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); @@ -59,15 +84,18 @@
-

+

+ + + - +

diff --git a/data/teams.db b/data/teams.db index ab1d5eb..c819427 100644 Binary files a/data/teams.db and b/data/teams.db differ diff --git a/puzzles.php b/puzzles.php index be86eca..d7f0cbd 100644 --- a/puzzles.php +++ b/puzzles.php @@ -85,7 +85,7 @@ -
  • ">
  • +
  • ">
  • diff --git a/require/database.php b/require/database.php index fe69edf..83c1949 100644 --- a/require/database.php +++ b/require/database.php @@ -17,6 +17,7 @@ "answer" TEXT NOT NULL, "location" TEXT NOT NULL, "code" TEXT NOT NULL, + "reward" TEXT NOT NULL, PRIMARY KEY("id" AUTOINCREMENT) )'); @@ -24,6 +25,7 @@ $this->pdo_teams = new PDO("sqlite:" . dirname(__FILE__) . $data_path . "teams.db"); $this->pdo_teams->query('CREATE TABLE IF NOT EXISTS "teams" ( "id" INTEGER NOT NULL UNIQUE, + "pzorder" INTEGER, PRIMARY KEY("id" AUTOINCREMENT) )'); diff --git a/require/locales/en.php b/require/locales/en.php index a9e71f7..63eff91 100644 --- a/require/locales/en.php +++ b/require/locales/en.php @@ -1,19 +1,19 @@ [ - "home" => "Home - Citizenship Code Hunt", - "team_confirm" => "Team confirmation - Citizenship Code Hunt", - "puzzles" => "Puzzles list - Citizenship Code Hunt", - "article" => "Puzzle - Citizenship Code Hunt" + "home" => "Home - Citizen's journey", + "team_confirm" => "Team confirmation - Citizen's journey", + "puzzles" => "Puzzles list - Citizen's journey", + "article" => "Puzzle - Citizen's journey" ], "page_title" => [ - "home" => "Citizenship Code Hunt", + "home" => "Citizen's journey", "team_confirm" => "Team confirmation", "puzzles" => "Puzzles list for team n°", "article" => "Puzzle n°" ], "home" => [ - "subtitle" => "Welcome to the Citizenship Code Hunt !", + "subtitle" => "Welcome to the Citizen's journey !", "message" => "Enter your team number to begin :", "team" => "Team number...", "button" => "OK" @@ -27,7 +27,8 @@ "message" => "This puzzle describes a specific place. Head to that place, then scan the QR code you'll find there.", "success" => "Well done ! Your team solved this puzzle !", "back_but" => "Puzzle list", - "next_but" => "Next puzzle", + "prev_but" => "🡰 Prev.", + "next_but" => "Next 🡲", "qr_but" => "Scan QR code", "cam_sel" => "Selected camera :", "f_cam" => "Front camera", @@ -38,7 +39,7 @@ "map_desc" => "Here is a map showing the location of the puzzles you already solved :" ], "nav" => [ - "title" => "Citizenship Code Hunt", + "title" => "Citizen's journey", "home" => "Home" ], "footer" => [ diff --git a/require/locales/fr.php b/require/locales/fr.php index 9494eaf..620d390 100644 --- a/require/locales/fr.php +++ b/require/locales/fr.php @@ -1,19 +1,19 @@ [ - "home" => "Accueil - Jeu de Pistes de la Citoyenneté", - "team_confirm" => "Confirmation du choix d'équipe - Jeu de Pistes de la Citoyenneté", - "puzzles" => "Liste des énigmes - Jeu de Pistes de la Citoyenneté", - "article" => "Énigme - Jeu de Pistes de la Citoyenneté" + "home" => "Accueil - Parcours du citoyen", + "team_confirm" => "Confirmation du choix d'équipe - Parcours du citoyen", + "puzzles" => "Liste des énigmes - Parcours du citoyen", + "article" => "Énigme - Parcours du citoyen" ], "page_title" => [ - "home" => "Jeu de Pistes de la Citoyenneté", + "home" => "Parcours du citoyen", "team_confirm" => "Confirmation du choix d'équipe", "puzzles" => "Liste des puzzles pour l'équipe n°", "article" => "Énigme n°" ], "home" => [ - "subtitle" => "Bienvenue dans le Jeu de Pistes de la Citoyenneté !", + "subtitle" => "Bienvenue dans le Parcours du citoyen !", "message" => "Pour commencer, veuillez entrer le numéro de votre équipe :", "team" => "Numéro d'équipe...", "button" => "Valider" @@ -27,7 +27,8 @@ "message" => "Cette énigme décrit un endroit précis. Dirigez-vous vers cet endroit, puis scannez le QR code que vous-y trouverez.", "success" => "Bien joué ! Votre équipe a résolu cette énigme !", "back_but" => "Liste des énigmes", - "next_but" => "Énigme suivante", + "prev_but" => "🡰 Préc.", + "next_but" => "Suiv. 🡲", "qr_but" => "Scanner le QR code", "cam_sel" => "Caméra sélectionnée :", "f_cam" => "Caméra avant", @@ -38,7 +39,7 @@ "map_desc" => "Voici la carte des emplacements des énigmes que vous avez résolues :" ], "nav" => [ - "title" => "Jeu de Pistes de la Citoyenneté", + "title" => "Parcours du citoyen", "home" => "Accueil" ], "footer" => [ diff --git a/require/puzzles_order.php b/require/puzzles_order.php index e72c49c..35c6aad 100644 --- a/require/puzzles_order.php +++ b/require/puzzles_order.php @@ -1,9 +1,9 @@ \ No newline at end of file diff --git a/style.css b/style.css index d35b9b1..afb7608 100644 --- a/style.css +++ b/style.css @@ -149,6 +149,7 @@ main header section { display: flex; flex-direction: row; justify-content: center; + align-items: center; gap: 15px; }