diff --git a/app/controller/AdminController.php b/app/controller/AdminController.php index 7693aea89d77f24501f27267f4f817f8321bcf4f..5f0517d0c140ce3ae939859aee592cf91a794646 100644 --- a/app/controller/AdminController.php +++ b/app/controller/AdminController.php @@ -28,6 +28,10 @@ class AdminController extends Controller { $this->view->display(); } + public function displayModifPartieOK() { + $this->view->display(); + } + public function supprimeJeu() { $slug = $this->route["params"]["slug"]; Admin::supprJeu($slug); @@ -498,6 +502,33 @@ class AdminController extends Controller { $this->view->display(); } + public function displayModifPartieStepe2() + { + session_start(); + $id = $this->route["params"]["slug"]; + if (!isset($_SESSION['jeu_select'])) { + header("Location:../../../partie"); + die(); + } + if (!isset($_SESSION['equipes'])) { + header("Location:../initModif"); + die(); + } + if(isset($_SESSION['errMsg'])){ + $this->view->errMsg = $_SESSION['errMsg']; + unset($_SESSION['errMsg']); + } + + $this->view->jeuactuel = $_SESSION['jeu_select']; + $this->view->equipes = $_SESSION['equipes']; + if($this->view->jeuactuel->type_scores == "scores") { + $this->view->scorePartie = Admin::getListeScorePartie($id); + } else { + $this->view->classement = Admin::getListeClassement($id); + } + $this->view->display(); + } + public function verifyModifPartieStep2() { $id = $this->route["params"]["slug"]; diff --git a/app/kernel/Router.php b/app/kernel/Router.php index 7423e56422f8ecaf2c48e404bc73dee6b74f620b..81fe4913bfdbd06fdce07b363d6687ae658a1e6f 100644 --- a/app/kernel/Router.php +++ b/app/kernel/Router.php @@ -347,6 +347,12 @@ class Router $result["params"]["slug"] = $parts[2]; } + else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'partie' && $parts[3] == 'modif' && $parts[4] == 'valid') { + $result["controller"] = 'Admin'; + $result['action'] = "displayModifPartieOK"; + $result["params"]["slug"] = $parts[2]; + } + else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "addjoueurs1") { $result["controller"] = "Partie"; $result["action"] = "addjoueurs1"; diff --git a/app/model/Admin.php b/app/model/Admin.php index 7729150682dce4d0c0346f0e5797bdb9871c5e32..c4e1ad520ee9b4202e522ef6baa18d21792933bc 100644 --- a/app/model/Admin.php +++ b/app/model/Admin.php @@ -191,7 +191,7 @@ class Admin extends Model { public static function getListeClassement2($id) { $db = Database::getInstance(); // on récupère la connexion à la BDD - $sql = "SELECT * FROM R_joueur_partie WHERE partie = :id ORDER BY classement"; // on définit la requête qu'on enverra (on considère que le slug contient jeu/nomDuJeu pour le classement par jeu. Donc il faudrait encore faire un explode() sur le slug. + $sql = "SELECT DISTINCT classement FROM R_joueur_partie WHERE partie = :id ORDER BY classement"; // on définit la requête qu'on enverra (on considère que le slug contient jeu/nomDuJeu pour le classement par jeu. Donc il faudrait encore faire un explode() sur le slug. $req = $db->prepare($sql); // on prépare la requête (c'est là que la mémthode __call() est utile dans la classe Database d'ailleurs) $req->execute(array(':id' => $id)); $res = array(); @@ -223,7 +223,7 @@ class Admin extends Model { } } // applique la partie - if (($resp = self::appliquePartie($id, $joueurs, $scores, $jeu)) > 0){ + if (($resp = Partie::modPartie($joueurs, $scores, $jeu, $id)) > 0){ print $resp; die(); } @@ -234,116 +234,9 @@ class Admin extends Model { while ($ligne = $stmt2->fetch(PDO::FETCH_ASSOC)) { $joueurs = $jeu->type == 'equipes' ? Admin::getEquipes($ligne['id']) : Admin::getListeJoueur($ligne['id']); $scores = $jeu->type_scores == 'scores' ? Admin::getListeScorePartie2($ligne['id']) : Admin::getListeClassement2($ligne['id']); - self::appliquePartie($ligne['id'],$joueurs, $scores, $jeu); - } - - } - - - static function appliquePartie($id_partie, $joueurs, $scores, $jeu) { - $db = Database::getInstance(); - $sql3 = "SELECT score FROM R_joueur_jeu WHERE joueur = :id_joueur AND jeu = :id_jeu;"; - $sql4 = "UPDATE R_joueur_partie SET classement = :classement, score = :score, score_partie = :score_partie - WHERE joueur = :joueur AND partie = :partie;"; - $sql5 = "UPDATE R_joueur_jeu SET score = :new_score WHERE joueur = :id_joueur AND jeu = :id_jeu;"; - $sqlN = "INSERT INTO R_joueur_jeu (joueur, jeu, score) VALUES (:id_joueur, :id_jeu, :score);"; - $stmt3 = $db->prepare($sql3); - $stmt4 = $db->prepare($sql4); - $stmt5 = $db->prepare($sql5); - - $m = count($scores); - - $old_score = array_fill(0, $m, 0); - $old_score_e = array(); - foreach ($joueurs as $k => $joueur) { - // version avec équipes - if ($jeu->type == 'equipes') { - $old_score_e[$k] = array(); - foreach ($joueur as $kj => $j) { - if ($stmt3->execute(array(":id_joueur" => $j->slug, ":id_jeu" => $jeu->slug))) { - if ($row = $stmt3->fetch()) { - // Le joueur a déja joué à ce jeu - $old_score_e[$k][$kj] = $row[0]; - } else { - // ou le joueur n'a jamais joué à ce jeu, on je rajoute à la relation. - $old_score_e[$k][$kj] = 1000; - $stmtN = $db->prepare($sqlN); - if ($stmtN->execute(array(":id_joueur" => $j->slug, ":id_jeu" => $jeu->slug, ":score" => 1000))) { - - } else - return 2; - } - } - } - $old_score[$k] = array_sum($old_score_e[$k]) / count($old_score_e[$k]); - } else { - // récupération du score actuel de chaque joueur - if ($stmt3->execute(array(":id_joueur" => $joueur->slug, ":id_jeu" => $jeu->slug))) { - if ($row = $stmt3->fetch()) { - // Le joueur a déja joué à ce jeu - $old_score[$k] = $row[0]; - } else { - // ou le joueur n'a jamais joué à ce jeu, on je rajoute à la relation. - $old_score[$k] = 1000; - $stmtN = $db->prepare($sqlN); - if ($stmtN->execute(array(":id_joueur" => $joueur->slug, ":id_jeu" => $jeu->slug, ":score" => 1000))) { - - } else - return 2; - } - - } - } - } - // Calcul de la nouvelle différence de scores et du classement de chacun dans la partie - $diff_scores = ELO_scores($old_score, $scores, 32); - $classement = Partie::calcul_classement($diff_scores); - foreach ($joueurs as $k => $joueur) { - if ($jeu->type_scores == 'classement'){ - $score = null; - } - else{ - $score = $scores[$k]; - } - if ($jeu->type == 'equipes') { - foreach ($joueur as $kj => $j) { - // Insertion des infos de la partie (avec le score avant la partie et le classement interne à la partie - // et le score de la partie) pour chaque joueur par équipe - if ($stmt4->execute(array(":partie" => $id_partie, - ":joueur" => $j->slug, - ":classement" => $classement[$k], ":score" => $old_score_e[$k][$kj], ":score_partie" => $score)) - ) { - $newS = $old_score_e[$k][$kj] + $diff_scores[$k]; - // On met à jour le score du joueur actuel dans sa relation avec le jeu - if ($stmt5->execute(array(":new_score" => $newS, - ":id_jeu" => $jeu->slug, ":id_joueur" => $j->slug)) - ) { - } else - return 4; - } else - return 3; - } - } else { - // Insertion des infos de la partie (avec le score avant la partie et le classement interne à la partie - // et le score de la partie) pour chaque joueur - - if ($stmt4->execute(array(":partie" => $id_partie, - ":joueur" => $joueur->slug, - ":classement" => $classement[$k], ":score" => $old_score[$k], ":score_partie" => $score)) - ) { - $newS = $old_score[$k] + $diff_scores[$k]; - // On met à jour le score du joueur actuel dans sa relation avec le jeu - if ($stmt5->execute(array(":new_score" => $newS, - ":id_jeu" => $jeu->slug, ":id_joueur" => $joueur->slug)) - ) { - } else - return 4; - } else - return 3; - } + Partie::modPartie($joueur, $scores, $jeu, $ligne['id']); } - // met à jour le classement de tous les joueurs - return Partie::updateClassement($jeu); + return 0; } } \ No newline at end of file diff --git a/app/view/Admin/displayModifPartieOK.html b/app/view/Admin/displayModifPartieOK.html new file mode 100644 index 0000000000000000000000000000000000000000..38ba0f326b8c375c056970f7947d688ce42abaee --- /dev/null +++ b/app/view/Admin/displayModifPartieOK.html @@ -0,0 +1,17 @@ +<?php + $page_title = "Page d'administration"; +include(ROOT."/app/view/Includes/header.include.html"); +?> + +<?php if(isset($_SESSION['user']) && Admin::estAdmin($_SESSION['user']->slug)) { ?> + +<article class="msg-valide"><h2>Modifiction réussie !</h2></article> + + +<?php } else { ?> + +<article class="msg-erreur">Vous n'êtes pas connecté comme administrateur</article> + +<?php } ?> + +<?php include(ROOT."/app/view/Includes/footer.include.html"); ?> diff --git a/app/view/Admin/displayModifPartieStepe2.html b/app/view/Admin/displayModifPartieStepe2.html index ecf8b2a6d88efa9ee1c5fa265a6a67bd179f1686..6ea40056a57e7bea44b475fdf544c2ef71b781cd 100644 --- a/app/view/Admin/displayModifPartieStepe2.html +++ b/app/view/Admin/displayModifPartieStepe2.html @@ -19,23 +19,23 @@ <?php foreach($e as $k => $j){ ?> <li> - <?php echo $j->pseudo; ?> + <?php echo $j->pseudo;?> </li> <?php } ?> </ul> - <?php if($jeuactuel->type_scores == 'scores'){ ?> - Score obtenu : <input type="text" title="score" required="" name="scores[]"/> + <?php if($jeuactuel->type_scores == 'scores'){ print_r($this->scorePartie);?> + Score obtenu : <input type="text" title="score" required="" name="scores[]" value="<?php echo isset($this->scorePartie[$e[0]->slug]) ? $this->scorePartie[$e[0]->slug] : "" ; ?>"/> <?php } else { ?> - Classement obtenu : <select title="score" required="" name="scores[]"> + Classement obtenu : <select title="score" required="" name="scores[]"> <?php for ($j=1;$j<= count($this->equipes);$j++){ ?> - <option value="<?php echo count($this->equipes)-$j;?>"><?php echo $j;?></option> + <option value="<?php echo count($this->equipes)-$j;?>" <?php echo ((isset($this->classement[$e[0]->slug]) && $this->classement[$e[0]->slug] == $j)? "selected" : "") ?>><?php echo $j;?></option> <?php } ?> </select> <?php } ?> <?php } ?> <div class="submit"> <input type="reset" name="reset" value="Réinitialiser"/> - <input type="submit" name="submit" value="Demander l'ajout"/> + <input type="submit" name="submit" value="Modifier"/> </div> </form> <div class="submit">