Skip to content
Extraits de code Groupes Projets
Valider 18f10891 rédigé par Romain 'Table' DROUIN's avatar Romain 'Table' DROUIN
Parcourir les fichiers

ajout de la page d'édition d'un profil

parent 681942ea
Aucune branche associée trouvée
Aucune étiquette associée trouvée
2 requêtes de fusion!21Merge de Dev dans Master,!8création de la page d'édition du profil
<?php <?php
include(ROOT."/Image.php");
class ProfilController extends Controller { // classe de contrôleur pour l'affichage des profils class ProfilController extends Controller { // classe de contrôleur pour l'affichage des profils
public function display() { public function display() {
...@@ -12,4 +13,65 @@ class ProfilController extends Controller { // classe de contrôleur pour l'affi ...@@ -12,4 +13,65 @@ class ProfilController extends Controller { // classe de contrôleur pour l'affi
$this->view->jeu_favori = $p; $this->view->jeu_favori = $p;
$this->view->display(); // on affiche ce profil $this->view->display(); // on affiche ce profil
} }
public function displayEdit() {
$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 displayValid() {
$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 verifyEdit() {
if (!isset($_POST['nom']) || !isset($_POST['prenom']) || !isset($_POST['email'])) { // si l'une des données manque, erreur
echo "<h1>Erreur : variables absentes</h1>";
die();
}
$slug = $this->route["params"]["slug"];
$profil = Profil::getFromSlug($slug);
if (isset($_POST['password']) && isset($_POST['password_bis']) && $_POST['password'] != "") {
if ($_POST['password'] == $_POST['password_bis']) {
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
Profil::setPassword($slug, $password);
} else {
session_start(); // on démarre une session pour avoir accès aux variables superglobales de session
$_SESSION["registerErrCode"] = 4; // on stocke le code d'erreur
header('Location:../edit'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne)
die();
}
}
$data = $_POST;
if(!isset($data['avatar_suppr'])) {
if(isset($_FILES['avatar'])) {
list($err, $avatar) = getImage($_FILES['avatar'], 512, 512);
if ($err == 0) {
unlink(ROOT . "/www/images/avatar/" . $slug . ".jpg");
saveImage($avatar, ROOT . "/www/images/avatar/" . $slug . ".jpg");
$data['avatar'] = 1;
} elseif ($err == 1) {
$data['avatar'] = $profil->avatar;
} else {
session_start(); // on démarre une session pour avoir accès aux variables superglobales de session
$_SESSION["registerErrCode"] = $err; // on stocke le code d'erreur
header('Location:../edit'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne)
die();
}
} else {
$data['avatar'] = $profil->avatar;
}
} else {
unlink(ROOT."/www/images/avatar/".$slug.".jpg");
$data['avatar'] = 0;
}
Profil::setAutre($slug, $data);
session_start();
$_SESSION['user'] = Connexion::getUser($slug);
header('Location:valid');
}
} }
...@@ -50,7 +50,25 @@ class Router { // classe PHP permettant l'analyse de l'URL des requêtes ...@@ -50,7 +50,25 @@ class Router { // classe PHP permettant l'analyse de l'URL des requêtes
$result["action"] = "display"; $result["action"] = "display";
$result["params"]["slug"] = $parts[1]; $result["params"]["slug"] = $parts[1];
} }
else if($parts[0] == "profil" && count($parts) == 3 && $parts[2] == "edit") {
$result["controller"] = "Profil";
$result["action"] = "displayEdit";
$result["params"]["slug"] = $parts[1];
}
else if($parts[0] == "profil" && count($parts) == 4 && $parts[2] == "edit" && $parts[3] == "verify") {
$result["controller"] = "Profil";
$result["action"] = "verifyEdit";
$result["params"]["slug"] = $parts[1];
}
else if($parts[0] == "profil" && count($parts) == 4 && $parts[2] == "edit" && $parts[3] == "valid") {
$result["controller"] = "Profil";
$result["action"] = "displayValid";
$result["params"]["slug"] = $parts[1];
}
/*** consultation des classements ***/ /*** consultation des classements ***/
else if($parts[0] == "classement" && count($parts) > 1) { // si classement général : 2 morceaux(classement/global), si classement spécifique : 3 morceaux (classement/jeu/nomDuJeu) else if($parts[0] == "classement" && count($parts) > 1) { // si classement général : 2 morceaux(classement/global), si classement spécifique : 3 morceaux (classement/jeu/nomDuJeu)
$result["controller"] = "Classement"; $result["controller"] = "Classement";
......
...@@ -19,6 +19,24 @@ class Profil extends Model { // classe de modèle pour l'affichage de profils ...@@ -19,6 +19,24 @@ class Profil extends Model { // classe de modèle pour l'affichage de profils
$req->setFetchMode(PDO::FETCH_CLASS, "Profil"); $req->setFetchMode(PDO::FETCH_CLASS, "Profil");
return $req->fetchAll(); return $req->fetchAll();
} }
public static function setPassword($slug, $password) {
$db = Database::getInstance(); // idem à au-dessus
$sql = "UPDATE R_joueur SET password = :password WHERE slug = :slug";
$req = $db->prepare($sql);
$req->execute(array(':password' => $password, ':slug' => $slug));
}
public static function setAutre($slug, $data) {
$db = Database::getInstance(); // idem à au-dessus
$sql = "UPDATE R_joueur SET nom = :nom, prenom = :prenom, email = :email, avatar = :avatar WHERE slug = :slug";
$req = $db->prepare($sql);
$req->execute(array(':nom' => $data['nom'],
':prenom' => $data['prenom'],
':email' => $data['email'],
':avatar' => $data['avatar'],
':slug' => $slug));
}
} }
......
...@@ -88,6 +88,11 @@ ...@@ -88,6 +88,11 @@
<div class="more-link"><a href="" >Plus...</a></div> <div class="more-link"><a href="" >Plus...</a></div>
</div> </div>
</div> </div>
<?php
if(isset($_SESSION['connected']) && $_SESSION['connected'] == true && $_SESSION['user']->slug == $this->profil->slug) {
?>
<div class="more-link"><a href="<?php print $this->profil->slug;?>/edit" >Modifier le profil</a></div>
<?php } ?>
</article> </article>
......
<?php
session_start();
$page_title = "Édition du profil de ".$this->profil->pseudo;
include(ROOT."/app/view/Includes/header.include.html");
?>
<?php
if(isset($_SESSION['registerErrCode'])) { // si message d'erreur
$errCode = $_SESSION['registerErrCode'];
if($errCode == 2) { // on détermine le message
$errMsg = '<h3>Pseudo déjà utilisé !</h3>';
} elseif($errCode == 3) {
$errMsg = '<h3>Adresse e-mail déjà utilisée !</h3>';
} elseif($errCode == 4) {
$errMsg = '<h3>Mots de passe différants</h3>';
} elseif($errCode == 5) {
$errMsg = '<h3>Problème sur l\'avatar</h3>';
} elseif($errCode == 6) {
$errMsg = '<h3>Le fichier n\'est pas une image</h3>';
} elseif($errCode == 7) {
$errMsg = '<h3>L\'image est trop grande</h3>';
}
echo '<article class="msg-erreur">'.$errMsg.'</article>'; // on affiche le message
unset($_SESSION['registerErrCode']); // on retire la variable de session
}
?>
<?php if(isset($_SESSION['connected']) && $_SESSION['connected'] == true &&
isset($_SESSION['user']) && $_SESSION['user']->slug == $this->profil->slug) { ?>
<article>
<h2>Édition du profil de <?php print $this->profil->pseudo; ?></h2>
<div class="inscription-form">
<form method="post" action="edit/verify" enctype="multipart/form-data" onsubmit="return checkForm();">
<div class="form-line">
<div class="validation-container-left">
<label for="password">Mot de passe* : </label>
<input type="password" name="password" id="password" onchange="if(this.value != '') callAjax('checkPassword', this.value, this.id);" />
</div>
<div class="validation-container">
<span id="rsp_password" class="validation-container-content"></span>
<input type="checkbox" disabled name="valid_password" class="validation-checkbox" />
</div>
</div>
<div class="form-line">
<div class="validation-container-left">
<label for="password_bis">Vérification mdp* : </label>
<input type="password" name="password_bis" id="password_bis" onchange="if(this.value != '') callAjax('checkPasswordBis', this.value+'¤'+$.(\'#password\').value, this.id);" />
</div>
<div class="validation-container">
<span id="rsp_password_bis" class="validation-container-content"></span>
<input type="checkbox" disabled name="valid_password_bis" class="validation-checkbox" />
</div>
</div>
<div class="form-line">
<div class="validation-container-left">
<label for="nom">Nom* : </label>
<input type="text" required="" name="nom" id="nom" <?php print "value=\"".$this->profil->nom."\"";?> />
</div>
<div class="validation-container">
<span id="rsp_nom" class="validation-container-content"></span>
<input type="checkbox" disabled name="valid_nom" class="validation-checkbox" />
</div>
</div>
<div class="form-line">
<div class="validation-container-left">
<label for="prenom">Prénom* : </label>
<input type="text" required="" name="prenom" id="prenom" <?php print "value=\"".$this->profil->prenom."\"";?>/>
</div>
<div class="validation-container">
<span id="rsp_prenom" class="validation-container-content"></span>
<input type="checkbox" disabled name="valid_prenom" class="validation-checkbox" />
</div>
</div>
<div class="form-line">
<div class="validation-container-left">
<label for="email">Adresse e-mail* : </label>
<input type="email" required="" name="email" id="email" <?php print "value=\"".$this->profil->email."\"";?> onchange="if(this.value != '') callAjax('checkEmail', this.value, this.id);" />
</div>
<div class="validation-container">
<span id="rsp_email" class="validation-container-content"></span>
<input type="checkbox" disabled name="valid_email" class="validation-checkbox" />
</div>
</div>
<div class="form-line">
<div class="validation-container-left">
<label for="description">Une description de vous : </label>
<textarea name="description" id="description" ><?php print $this->profil->description;?></textarea>
</div>
</div>
<div class="form-line">
<div class="validation-container-left">
<label for="avatar">Avatar</label>
<input type="file" name="avatar" id="avatar" />
</div>
</div>
<div class="form-line">
<div class="validation-container-left">
<label for="avatar_suppr">Supprimer l'avatar : </label>
<input type="checkbox" name="avatar_suppr" id="avatar_suppr" value="1"/>
</div>
</div>
<div class="submit">
<input type="reset" name="reset" value="Réinitialiser">
<input type="submit" name="submit" value="Modifier">
</div>
</form>
</div>
</article>
<?php } else {?>
<article class="msg-erreur">Vous n'êtes pas <?php print $this->profil->pseudo; ?></article>
<?php } ?>
<?php include(ROOT."/app/view/Includes/footer.include.html"); ?>
\ No newline at end of file
<?php
$page_title = "Inscription réussie";
include(ROOT."/app/view/Includes/header.include.html");
?>
<article class="msg-valide"><h2>Modifiction Réussi</h2></article>
<?php include(ROOT."/app/view/Includes/footer.include.html"); ?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter