Merge branch 'master' of https://codefirst.iut.uca.fr/git/jade.van_brabandt/3.01-QCM_MuscuMaths
continuous-integration/drone/push Build is passing Details

pull/37/head
Maxence GUITARD 1 year ago
commit cc60aecd33

@ -29,9 +29,10 @@ class ControllerAdminAdministrators
echo $twig->render($vues["adminAdministrators"], [
'administrators' => $administrators,
'error' => $_SESSION["error"],
]);
}
else {
$_SESSION["error"] = null;
} else {
header("Location:/loginAdmin");
}
} catch (PDOException $e) {
@ -41,27 +42,40 @@ class ControllerAdminAdministrators
}
}
function delete($param) {
function delete($param)
{
$this->mdAdministrator->deleteAdministratorByID($param["id"]);
header("Location:/admin/administrators");
}
function add($param) {
function add($param)
{
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
$_SESSION["error"]="Méthode non autorisée.";
} else {
$username = $_POST['username'];
$password = $_POST['password'];
$username = trim($_POST['username']);
$password = trim($_POST['password']);
if (!isset($username) || !isset($password) || empty($username) || empty($password)) {
$_SESSION["error"]="Veuillez remplir tous les champs.";
} else {
$Admin = [
'username' => $username,
'password' => $password,
];
if ($this->mdAdministrator->verifyAdministratorByName($Admin) != null) {
$_SESSION["error"]="Cet admin existe déjà.";
} else {
$this->mdAdministrator->addAdministrator($Admin);
header("Location:/admin/administrators");
}
}
}
}
function updatemodal($param) {
function updatemodal($param)
{
$administrator = $this->mdAdministrator->getAdministratorByID($param["id"]);
@ -70,7 +84,8 @@ class ControllerAdminAdministrators
]);
}
function update($param) {
function update($param)
{
$id = $_POST['id'];
$username = $_POST['username'];

@ -49,7 +49,9 @@ class ControllerUser
function home()
{
echo $this->twig->render($this->vues["home"]);
echo $this->twig->render($this->vues["home"], [
'idPlayerConnected' => $_SESSION["idPlayerConnected"]
]);
}
function error()
@ -78,6 +80,10 @@ class ControllerUser
function loginAdmin()
{
if ($_SESSION["idAdminConnected"] != null){
header("Location:/admin/administrators");
}
echo $this->twig->render($this->vues["loginAdmin"], [
'error' => $_SESSION["error"],
]);
@ -87,6 +93,10 @@ class ControllerUser
function loginPlayer()
{
if ($_SESSION["idPlayerConnected"] != null){
header("Location:/userStatus");
}
echo $this->twig->render($this->vues["loginPlayer"], [
'error' => $_SESSION["error"],
]);
@ -94,6 +104,25 @@ class ControllerUser
$_SESSION["error"] = "";
}
function userStatus(){
if($_SESSION["idPlayerConnected"] != null){
$this->mdPlayer = new ModelPlayer();
$player = $this->mdPlayer->getPlayerByID($_SESSION["idPlayerConnected"]);
$maxscores = $this->mdPlayer->getMaxScoresWithChapter($player);
foreach ($maxscores as $maxscore) {
$maxscore["chapter"]=$this->mdChapter->getChapterByID($maxscore["idchapter"])->getName();
}
echo $this->twig->render($this->vues["userStatus"],
[
'player' => $player,
'maxscores' => $maxscores,
]);
}
else {
header("Location:/loginPlayer");
}
}
function verifyAdmin()
{
$username = $_POST['username'];
@ -258,21 +287,6 @@ class ControllerUser
}
}
function userStatus(){
if($_SESSION["idPlayerConnected"] != null){
//$this->mdAdministrator = new ModelAdministrator();
//$administrators = $this->mdAdministrator->getAdministrators();
echo $this->twig->render($this->vues["userStatus"]);
}
else {
header("Location:/loginPlayer");
}
}
function passer()
{
$numQuestion = $_POST["numQuestion"];

@ -87,6 +87,19 @@ class GatewayAdministrator
);
$results = $this->con->getResults();
return $results[0];
}
public function verifyAdministratorByName($administrator)
{
$query = "SELECT administrators.id FROM administrators WHERE username = :username";
$this->con->executeQuery(
$query,
array(
':username' => array($administrator['username'], PDO::PARAM_STR),
)
);
$results = $this->con->getResults();
return $results[0];
}
}

@ -71,4 +71,16 @@ class GatewayJouer
$results = $this->con->getResults();
return $results[0];
}
public function getMaxScoresWithChapter($player)
{
$query = "SELECT maxscore,idchapter FROM jouer WHERE idplayer = :idplayer;";
$this->con->executeQuery(
$query,
array(
':idplayer' => array($player->getId(), PDO::PARAM_STR)
)
);
$results = $this->con->getResults();
return $results;
}
}

@ -93,7 +93,6 @@ class GatewayPlayer
)
);
$results = $this->con->getResults();
return $results[0];
return $results[0][0];
}
}

@ -52,4 +52,9 @@ class ModelAdministrator
$administratorsId = $this->gwAdministrator->verifyAdministrator($Administrator);
return $administratorsId;
}
public function verifyAdministratorByName($Administrator)
{
$administratorsId = $this->gwAdministrator->verifyAdministratorByName($Administrator);
return $administratorsId;
}
}

@ -32,6 +32,7 @@ class ModelPlayer
{
$playerDataArray = $this->gwPlayer->getPlayerByID($id);
$player = new Player($playerDataArray["id"], $playerDataArray["nickname"], $playerDataArray["password"]);
return $player;
}
public function updatePlayer($id, $player)
@ -60,6 +61,12 @@ class ModelPlayer
$this->gwJouer->updateJouer($jouer);
}
public function getMaxScoresWithChapter($player)
{
$maxScores = $this->gwJouer->getMaxScoresWithChapter($player);
return $maxScores;
}
public function verifyJouer($jouer)
{
$tabidjouer = $this->gwJouer->verifyJouer($jouer);

@ -1,6 +1,5 @@
<!DOCTYPE html>
<html lang="fr">
<html>
<head>
<meta charset=utf-8>

@ -5,32 +5,33 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</script>
<link rel="stylesheet" href="css/global.css">
<link rel="stylesheet" href="../css/global.css">
</head>
<body>
<div class="container mt-5">
<body id="bodyStyle">
<div>
<a href="/" role="button" class="btn btn-secondary position-absolute top-0 mt-2 end-0 me-2">
Retour
</a>
</div>
<div class="container mt-5 text-light fs-4">
<h1>Liste des administrators</h1>
<ul class="list-group">
{% for admin in administrators %}
<li class="list-group-item d-flex justify-content-between align-items-center">
<li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary">
{{ admin.username }}
<div class="btn-group" role="group">
<a type="button" href="/admin/administrators/updatemodal/{{ admin.id }}" class="btn btn-primary">Modifier</a>
<a type="button" href="/admin/administrators/delete/{{ admin.id }}" class="btn btn-danger">Supprimer</a>
<a type="button" href="/admin/administrators/updatemodal/{{ admin.id }}" class="btn btn-primary fs-5">Modifier</a>
<a type="button" href="/admin/administrators/delete/{{ admin.id }}" class="btn btn-danger fs-5">Supprimer</a>
</div>
</li>
{% endfor %}
</ul>
</div>
<div class="container mt-3">
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalAdministrators">Ajouter un administrateur</button>
<div class="btn-group" role="group">
<a href="/admin/questions" class="btn btn-secondary"> ← Questions </a>
<a href="/" class="btn btn-secondary">Retour</a>
<a href="/admin/chapters" class="btn btn-secondary">Chapitres →</a>
</div>
<div class="container mt-3 d-flex justify-content-between">
<a type="button" href="/admin/questions" class="btn btn-secondary fs-5"> ← Questions </a>
<button type="button" class="btn btn-primary fs-5" data-bs-toggle="modal" data-bs-target="#modalAdministrators">Ajouter un administrateur</button>
<a type="button" href="/admin/chapters" class="btn btn-secondary fs-5">Chapitres →</a>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>

@ -6,31 +6,33 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</script>
<link rel="stylesheet" href="css/global.css">
<link rel="stylesheet" href="../css/global.css">
</head>
<body>
<div class="container mt-5">
<body id="bodyStyle">
<div>
<a href="/" role="button" class="btn btn-secondary position-absolute top-0 mt-2 end-0 me-2">
Retour
</a>
</div>
<div class="container mt-5 text-light fs-4">
<h1>Liste des chapitres</h1>
<ul class="list-group">
{% for chapter in chapters %}
<li class="list-group-item d-flex justify-content-between align-items-center">
<li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary">
{{ chapter.name }}
<div class="btn-group" role="group">
<a type="button" href="/admin/chapters/updatemodal/{{ chapter.id }}" class="btn btn-primary">Modifier</a>
<a type="button" href="/admin/chapters/delete/{{ chapter.id }}" class="btn btn-danger">Supprimer</a>
<a type="button" href="/admin/chapters/updatemodal/{{ chapter.id }}" class="btn btn-primary fs-5">Modifier</a>
<a type="button" href="/admin/chapters/delete/{{ chapter.id }}" class="btn btn-danger fs-5">Supprimer</a>
</div>
</li>
{% endfor %}
</ul>
</div>
<div class="container mt-3">
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalchapters">Ajouter un chapitre</button>
<div class="btn-group" role="group">
<a href="/admin/administrators" class="btn btn-secondary"> ← Administrateur</a>
<a href="/" class="btn btn-secondary">Retour</a>
<a href="/admin/questions" class="btn btn-secondary">Questions →</a>
</div>
<div class="container mt-3 d-flex justify-content-between">
<a type="button" href="/admin/administrators" class="btn btn-secondary fs-5"> ← Administrateur</a>
<button type="button" class="btn btn-primary fs-5" data-bs-toggle="modal" data-bs-target="#modalchapters">Ajouter un chapitre</button>
<a type="button" href="/admin/questions" class="btn btn-secondary fs-5">Questions →</a>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>

@ -6,31 +6,33 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</script>
<link rel="stylesheet" href="css/global.css">
<link rel="stylesheet" href="../css/global.css">
</head>
<body>
<div class="container mt-5">
<body id="bodyStyle">
<div>
<a href="/" role="button" class="btn btn-secondary position-absolute top-0 mt-2 end-0 me-2">
Retour
</a>
</div>
<div class="container mt-5 text-light fs-4">
<h1>Liste des questions</h1>
<ul class="list-group">
{% for question in questions %}
<li class="list-group-item d-flex justify-content-between align-items-center">
<li class="list-group-item d-flex justify-content-between align-items-center border-dark text-light bg-secondary">
{{ question.content }}
<div class="btn-group" role="group">
<a type="button" href="/admin/questions/updatemodal/{{ question.id }}" class="btn btn-primary">Modifier</a>
<a type="button" href="/admin/questions/delete/{{ question.id }}" class="btn btn-danger">Supprimer</a>
<a type="button" href="/admin/questions/updatemodal/{{ question.id }}" class="btn btn-primary fs-5">Modifier</a>
<a type="button" href="/admin/questions/delete/{{ question.id }}" class="btn btn-danger fs-5">Supprimer</a>
</div>
</li>
{% endfor %}
</ul>
</div>
<div class="container mt-3">
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalquestions">Ajouter un chapitre</button>
<div class="btn-group" role="group">
<a href="/admin/chapters" class="btn btn-secondary"> ← Chapitres</a>
<a href="/" class="btn btn-secondary">Retour</a>
<a href="/admin/administrators" class="btn btn-secondary">Administrateurs →</a>
</div>
<div class="container mt-3 d-flex justify-content-between">
<a type="button" href="/admin/chapters" class="btn btn-secondary fs-5"> ← Chapitres</a>
<button type="button" class="btn btn-primary fs-5" data-bs-toggle="modal" data-bs-target="#modalquestions">Ajouter un chapitre</button>
<a type="button" href="/admin/administrators" class="btn btn-secondary fs-5">Administrateurs →</a>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>

@ -10,7 +10,15 @@
<body id="bodyStyle">
<div>
<a href="/loginPlayer">CONNEXION</a>
{% if idPlayerConnected == null %}
<a href="/loginPlayer" role="button" class="fs-4 btn btn-secondary btn-lg position-absolute top-0 mt-2 end-0 me-2">
CONNEXION
</a>
{% else %}
<a href="/loginPlayer" role="button" class="fs-4 btn btn-secondary btn-lg position-absolute top-0 mt-2 end-0 me-2">
PROFIL
</a>
{% endif %}
</div>
<div class="d-flex flex-column align-items-center justify-content-between" style="height:95vh">
<img src="Media/Logo.png" style="margin-top:50px; object-fit:fill;" class="h-25">
@ -21,7 +29,7 @@
</h1>
</div>
</a>
<a href="/multiplayer" class="text-white m-3 container text-center d-flex align-items-center w-75 rounded border border-white text-center" style="background-color:orange;text-decoration: none;color: black;height:20vh;">
<a href="/lobby" class="text-white m-3 container text-center d-flex align-items-center w-75 rounded border border-white text-center" style="background-color:orange;text-decoration: none;color: black;height:20vh;">
<div class="container text-center d-flex align-items-center text-center">
<h1 class="mx-auto fs-1">
MULTIJOUEUR

@ -6,7 +6,12 @@
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css">
</head>
<body>
<body id="bodyStyle">
<div>
<a href="/" role="button" class="fs-4 btn btn-secondary btn-lg position-absolute top-0 mt-2 end-0 me-2">
Retour
</a>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-md-4 offset-md-4">

@ -6,7 +6,12 @@
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="css/global.css">
</head>
<body>
<body id="bodyStyle">
<div>
<a href="/" role="button" class="fs-4 btn btn-secondary btn-lg position-absolute top-0 mt-2 end-0 me-2">
Retour
</a>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-md-4 offset-md-4">

@ -11,9 +11,11 @@
</head>
<body id="bodyStyle">
<a href="/" role="button" class="fs-4 btn btn-secondary btn-lg position-absolute end-0 me-2">
<div>
<a href="/" role="button" class="fs-4 btn btn-secondary btn-lg position-absolute top-0 mt-2 end-0 me-2">
Retour
</a>
</div>
<form action="/verifySingleplayer" method="post">
<div class="text-center" style="padding-top: 6vh">
<h1 style="color: white; font-size: 50px">Difficulte :</h1>

@ -5,7 +5,6 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</script>
<link rel="stylesheet" href="css/global.css">
</head>

@ -1,16 +1,29 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset=utf-8>
<title>Math'Educ</title>
<title>Maths Educ</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<link rel="stylesheet" href="/css/global.css">
<link rel="stylesheet" href="css/global.css">
</head>
<body id="bodyStyle">
<div class="container mt-5">
<div>
<p>test</p>
<a href="/" role="button" class="fs-4 btn btn-secondary btn-lg position-absolute top-0 mt-2 end-0 me-2">
Retour
</a>
</div>
<div class="container mt-5">
<div class="col-5 bg-light border border-warning rounded">
<p> Player Nickname : </p>
<p>{{ player.nickname }} </p>
</div>
{% for maxscore in maxscores %}
<div class="col-5 bg-light border border-warning rounded">
<p> Maxscore pour le chapitre {{ maxscore["chapter"] }} : </p>
<p>{{ maxscore["maxscore"] }} </p>
</div>
{% endfor %}
</body>
</html>
Loading…
Cancel
Save