From ad596ab34801868fb94d2460c402db16a13d98e0 Mon Sep 17 00:00:00 2001
From: Table <romain.drouin@ensiie.fr>
Date: Tue, 26 Apr 2016 16:11:44 +0200
Subject: [PATCH] ajout de la page pour modifier un profile

---
 app/controller/ProfilController.php | 27 +++++++++++++++++++++++++++
 app/kernel/Router.php               | 14 +++++++++++++-
 app/model/Profil.php                | 16 ++++++++++++++--
 3 files changed, 54 insertions(+), 3 deletions(-)

diff --git a/app/controller/ProfilController.php b/app/controller/ProfilController.php
index 37d6784..5d64e5c 100644
--- a/app/controller/ProfilController.php
+++ b/app/controller/ProfilController.php
@@ -7,4 +7,31 @@ class ProfilController extends Controller { // classe de contrôleur pour l'affi
 		$this->view->profil = Profil::getFromSlug($slug); // on utilise le modèle pour aller chercher en BDD le profil qui nous intéresse
 		$this->view->display(); // on affiche ce profil
 	}
+
+	public function edit() {
+		$slug = $this->route["params"]["slug"]; // on récupère le "slug", en gros tout le reste de l'URL qui n'a pas encore servi
+		// je précise que dans ce cas précis, le $slug ne contient que le pseudo du joueur sosu forme normalisée. Donc je pourrais renommer la variable $slug_joueur...
+		$this->view->profil = Profil::getFromSlug($slug); // on utilise le modèle pour aller chercher en BDD le profil qui nous intéresse
+		$this->view->display(); // on affiche ce profil
+	}
+	
+	public function editverify() { // verifie si tout les variables sont correctes
+		if (!isset($_POST['nomModif']) || !isset($_POST['prenomModif']) || !isset($_POST['emailModif']) || !isset($_POST['descrModif'])) { // si l'une des données manque, erreur
+			//appeler une fonction d'erreur
+			echo "<h1>Erreur : variables absentes</h1>";
+			die();
+		}
+
+		$slug = $this->route["params"]["slug"];
+
+		$res = Profil::editProfil($slug, $_POST['nomModif'], $_POST['prenomModif'], $_POST['emailModif'], $_POST['descrModif']);
+
+		if($res) {
+			Print "<p>OK</p>";
+			header('Location:valid');
+		} else {
+			Print "<p>PAS OK</p>";
+			header('Location:echec');
+		}
+	}
 }
diff --git a/app/kernel/Router.php b/app/kernel/Router.php
index 46e5b23..cde0810 100644
--- a/app/kernel/Router.php
+++ b/app/kernel/Router.php
@@ -48,7 +48,19 @@ class Router { // classe PHP permettant l'analyse de l'URL des requêtes
 			else if($parts[0] == "profil" && count($parts) == 2) { // consultation d'un profil : 2 morceaux (profil/pseudoDeLaPersonne)
 				$result["controller"] = "Profil"; 
 				$result["action"] = "display"; 
-				$result["params"]["slug"] = $parts[1]; 
+				$result["params"]["slug"] = $parts[1];
+			}
+
+			else if($parts[0] == "profil" && count($parts) == 3 && $parts[2] == "edit") { // édition d'un profil : 3 morceaux (profil/pseudoDeLaPersonne/edit)
+				$result["controller"] = "Profil";
+				$result["action"] = "edit";
+				$result["params"]["slug"] = $parts[1];
+			}
+
+			else if($parts[0] == "profil" && count($parts) == 4 && $parts[2] == "edit" && $parts[3] == "verify") { // édition d'un profil : 3 morceaux (profil/pseudoDeLaPersonne/edit)
+				$result["controller"] = "Profil";
+				$result["action"] = "editverify";
+				$result["params"]["slug"] = $parts[1];
 			}
 			
 			/*** consultation des classements ***/
diff --git a/app/model/Profil.php b/app/model/Profil.php
index 5c61bf0..6a7b70e 100644
--- a/app/model/Profil.php
+++ b/app/model/Profil.php
@@ -5,7 +5,7 @@ class Profil extends Model { // classe de modèle pour l'affichage de profils
 	
 	public static function getFromSlug($slug_profil) { // méthode permettant de récupérer les informations relatives à un profil donné de la BDD
 		$db = Database::getInstance(); // on récupère la connexion à la BDD
-		$sql = "SELECT * FROM R_joueur WHERE slug = :slug"; // on définit la requête qu'on enverra
+		$sql = "SELECT * FROM r_joueur WHERE slug = :slug"; // on définit la requête qu'on enverra
 		$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->setFetchMode(PDO::FETCH_CLASS, "Profil");  // règle le type dans lequel on doit mettre les données (PDO va chercher les attributs de la classe de même nom que ses colonnes de BDD et mettre dedans les valeurs correspondantes)
 		$req->execute(array(":slug" => $slug_profil)); // on remplace le "::slug" par sa valeur dans la requête
@@ -14,11 +14,23 @@ class Profil extends Model { // classe de modèle pour l'affichage de profils
 	
 	public static function getList() { // méthode permettant de récupérer la liste des profils de la BDD
 		$db = Database::getInstance(); // idem à au-dessus
-		$sql = "SELECT * FROM R_joueur";
+		$sql = "SELECT * FROM r_joueur";
 		$req = $db->query($sql);
 		$req->setFetchMode(PDO::FETCH_CLASS, "Profil");
 		return $req->fetchAll();
 	}
+
+	public static function editProfil($slug_profil, $nom, $prenom, $email, $descr) {
+		$db = Database::getInstance();
+		$sql = "UPDATE r_joueur SET nom = :nom, prenom = :prenom, email = :email, decription = :descr WHERE slug LIKE :slug";
+		$req = $db->prepare($sql); // on prépare la requête
+		$res = $req->execute(array(		":nom" 		=> $nom,
+									  	":prenom" 	=> $prenom,
+									  	":email" 	=> $email,
+									  	":descr" => $descr,
+										":slug" => $slug_profil));
+		return $res;
+	}
 }
 
 
-- 
GitLab