From 8a26f49de3c5f849b1c53dcde9d5deb3b9c63489 Mon Sep 17 00:00:00 2001 From: Leo Tuaillon Date: Sun, 19 Nov 2023 10:09:18 +0100 Subject: [PATCH] =?UTF-8?q?ajout=20de=20la=20page=20affiche=20des=20profil?= =?UTF-8?q?s=20(10=20par=2010)=20et=20syst=C3=A8me=20de=20pagination=20ent?= =?UTF-8?q?re=20les=20pages=20fonctionnelle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 6 + php/src/controleur/FrontControleur.php | 2 +- php/src/controleur/UtilisateurControleur.php | 33 +++- php/src/gateway/AlumniGateway.php | 25 +-- php/src/gateway/ProfilGateway.php | 11 ++ php/src/modele/UtilisateurModele.php | 152 +++++++++++-------- php/templates/profil.html | 58 +++++++ 7 files changed, 212 insertions(+), 75 deletions(-) create mode 100644 .idea/sqldialects.xml create mode 100644 php/templates/profil.html diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 0000000..95a9d20 --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/php/src/controleur/FrontControleur.php b/php/src/controleur/FrontControleur.php index 594bd18..cf6292e 100755 --- a/php/src/controleur/FrontControleur.php +++ b/php/src/controleur/FrontControleur.php @@ -20,7 +20,7 @@ class FrontControleur ], "Utilisateur" => [ - "connexion", "inscription", "accueil", "consulterProfilLimite", "publierOffre", "listerEvenement", "creerEvenement", "supprimerEvenement", "avoirDetailEvenement", "rechercherEvenement" + "connexion", "getProfilByPage","inscription", "accueil", "consulterProfilLimite", "publierOffre", "listerEvenement", "creerEvenement", "supprimerEvenement", "avoirDetailEvenement", "rechercherEvenement" ] ); diff --git a/php/src/controleur/UtilisateurControleur.php b/php/src/controleur/UtilisateurControleur.php index 0e277c4..7d93cde 100755 --- a/php/src/controleur/UtilisateurControleur.php +++ b/php/src/controleur/UtilisateurControleur.php @@ -24,6 +24,12 @@ class UtilisateurControleur case "accueil": $this->accueil(); break; + case "profil": + $this->profil(); + break; + case "getProfilByPage": + $this->getProfilByPage(); + break; case "inscription_success": $this->inscription_success(); break; @@ -64,7 +70,7 @@ class UtilisateurControleur $this->rechercherEvenement(); break; default: - $dVueErreur[] = "Action inconnue ou non autorisée"; + $dVueErreur[] = "Action inconnue ou non autorisée" . $action; echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]); } } @@ -396,4 +402,29 @@ class UtilisateurControleur global $twig; echo $twig->render('evenement.html', ['evenements' => $evenements]); } + + private function getProfilByPage() + { + global $twig; + $dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant + $userModel = new UtilisateurModele(); + + if (isset($_GET['page'])) { + $page = Validation::nettoyerString($_GET['page']); + $utilisateurs = $userModel->getUtilisateurByPage($page); + + if ($utilisateurs[0] != null) { + echo $twig->render('profil.html', [ + 'utilisateurs' => $utilisateurs, + 'page' => $page] + ); + } else { + $dVueErreur[] = "L'utilisateur n'existe pas."; + echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]); + } + } else { + $dVueErreur[] = "L'utilisateur n'existe pas."; + echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]); + } + } } \ No newline at end of file diff --git a/php/src/gateway/AlumniGateway.php b/php/src/gateway/AlumniGateway.php index e4fb4c7..e9ae7b4 100644 --- a/php/src/gateway/AlumniGateway.php +++ b/php/src/gateway/AlumniGateway.php @@ -9,11 +9,13 @@ class AlumniGateway /** * @param $con */ - public function __construct(Connection $con){ + public function __construct(Connection $con) + { $this->con = $con; } - public function insert(string $email, string $motDePasse, string $role){ + public function insert(string $email, string $motDePasse, string $role) + { $query = 'INSERT INTO Alumni (mail, mdp, role) VALUES (:mail, :mdp, :role)'; return $this->con->executeQuery($query, array( ':mail' => array($email, PDO::PARAM_STR), @@ -23,15 +25,16 @@ class AlumniGateway } - public function updateMotDePasse(int $id, string $password){ - $query='UPDATE Alumni SET motDePasse=:new WHERE id=:i'; + public function updateMotDePasse(int $id, string $password) + { + $query = 'UPDATE Alumni SET motDePasse=:new WHERE id=:i'; $this->con->executeQuery($query, array( ':i' => array($id, PDO::PARAM_INT), ':new' => array($password, PDO::PARAM_STR) )); } - public function ObtenirById(int $id) : array + public function ObtenirById(int $id): array { $query = 'SELECT * FROM Alumni WHERE id=:i'; $this->con->executeQuery($query, array( @@ -40,7 +43,8 @@ class AlumniGateway return $this->con->getResults(); } - public function findByEmail(string $email){ + public function findByEmail(string $email) + { $query = 'SELECT Alumni.id, Alumni.mail, Alumni.mdp, Alumni.role, Profil.nom, Profil.prenom FROM Alumni LEFT JOIN Profil ON Alumni.id = Profil.alumni @@ -52,8 +56,9 @@ class AlumniGateway } - public function getAll(){ - $query='SELECT * FROM Alumni'; + public function getAll() + { + $query = 'SELECT * FROM Alumni'; $this->con->executeQuery($query); return $this->con->getResults(); } @@ -67,4 +72,6 @@ class AlumniGateway $res = $this->con->getResults(); return $res[0]['id']; } -} \ No newline at end of file + + +} diff --git a/php/src/gateway/ProfilGateway.php b/php/src/gateway/ProfilGateway.php index 3673b68..ab6d847 100644 --- a/php/src/gateway/ProfilGateway.php +++ b/php/src/gateway/ProfilGateway.php @@ -33,4 +33,15 @@ class ProfilGateway )); return $this->con->getResults(); } + + public function userByPage(int $page, int $nbParPage) + { + $start = ($page - 1) * $nbParPage; // Calcul de l'index de départ pour LIMIT + $query = 'SELECT * FROM Profil LIMIT :start, :nbParPage'; + $this->con->executeQuery($query, array( + ':start' => array($start, PDO::PARAM_INT), + ':nbParPage' => array($nbParPage, PDO::PARAM_INT), + )); + return $this->con->getResults(); + } } \ No newline at end of file diff --git a/php/src/modele/UtilisateurModele.php b/php/src/modele/UtilisateurModele.php index 9986c2a..accb46b 100755 --- a/php/src/modele/UtilisateurModele.php +++ b/php/src/modele/UtilisateurModele.php @@ -7,6 +7,7 @@ use App\metier\Evenement; use App\metier\Alumni; use App\gateway\AlumniGateway; use App\gateway\ProfilGateway; +use App\metier\Profil; class UtilisateurModele @@ -15,7 +16,7 @@ class UtilisateurModele public function __construct() { - $this->con = new Connection(DB_HOST,DB_USER,DB_PASS); + $this->con = new Connection(DB_HOST, DB_USER, DB_PASS); } /** @@ -25,24 +26,24 @@ class UtilisateurModele * @return Alumni */ - public function connection(string $email, string $mdp) : ? Alumni - { - $con = new Connection(DB_HOST,DB_USER,DB_PASS); - $gate = new AlumniGateway($con); - - // Récupation de l'utilisateur avec l'email - $utilisateur = $gate->findByEmail($email); - if ($utilisateur[0]!=null) { - // L'utilisateur existe, vérification du mot de passe - if (password_verify($mdp, $utilisateur[0]['mdp'])) { - // Le mot de passe est correct, retournez l'utilisateur - return new Alumni($utilisateur[0]['id'],$utilisateur[0]['mail'], $utilisateur[0]['mdp'], $utilisateur[0]['role'],$utilisateur[0]['nom'],$utilisateur[0]['prenom']); - } else { - return null; - } - } else { - return null; - } + public function connection(string $email, string $mdp): ?Alumni + { + $con = new Connection(DB_HOST, DB_USER, DB_PASS); + $gate = new AlumniGateway($con); + + // Récupation de l'utilisateur avec l'email + $utilisateur = $gate->findByEmail($email); + if ($utilisateur[0] != null) { + // L'utilisateur existe, vérification du mot de passe + if (password_verify($mdp, $utilisateur[0]['mdp'])) { + // Le mot de passe est correct, retournez l'utilisateur + return new Alumni($utilisateur[0]['id'], $utilisateur[0]['mail'], $utilisateur[0]['mdp'], $utilisateur[0]['role'], $utilisateur[0]['nom'], $utilisateur[0]['prenom']); + } else { + return null; + } + } else { + return null; + } } /** @@ -53,43 +54,43 @@ class UtilisateurModele * @return \Alumni chargé */ - public function inscription(string $prenom, string $nom,string $email, string $hashpassword):? Alumni - { - $role = "Membre"; - $con = new Connection(DB_HOST,DB_USER,DB_PASS); - $gate = new AlumniGateway($con); - $profilGate = new ProfilGateway($con); - // Insérez le nouvel utilisateur dans la base de données en utilisant AlumniGateway - if ($gate->insert($email, $hashpassword, $role)) { - $id = $gate->getID($email); - if($profilGate->insert($id,$nom, $prenom,$email)){ - // L'insertion a réussi, retournez le nouvel utilisateur - $nouvelUtilisateur = new Alumni($id,$email, $hashpassword, $role,$nom,$prenom); - return $nouvelUtilisateur; - } - return null; - } else { - // L'insertion a échoué, renvoyez un utilisateur vide pour indiquer l'échec - return null; - } - } - - public function getUtilisateurByEmail(string $email) - { - $con = new Connection(DB_HOST,DB_USER,DB_PASS); - $gate = new AlumniGateway($con); - // Récupérez l'utilisateur avec l'email donné en utilisant AlumniGateway - $utilisateur = $gate->findByEmail($email); - if ($utilisateur instanceof Alumni) { - // L'utilisateur existe, retournez-le - return $utilisateur; - } else { - // L'utilisateur n'existe pas, renvoyez null - return null; - } - } - - public function getEvenement() : array + public function inscription(string $prenom, string $nom, string $email, string $hashpassword): ?Alumni + { + $role = "Membre"; + $con = new Connection(DB_HOST, DB_USER, DB_PASS); + $gate = new AlumniGateway($con); + $profilGate = new ProfilGateway($con); + // Insérez le nouvel utilisateur dans la base de données en utilisant AlumniGateway + if ($gate->insert($email, $hashpassword, $role)) { + $id = $gate->getID($email); + if ($profilGate->insert($id, $nom, $prenom, $email)) { + // L'insertion a réussi, retournez le nouvel utilisateur + $nouvelUtilisateur = new Alumni($id, $email, $hashpassword, $role, $nom, $prenom); + return $nouvelUtilisateur; + } + return null; + } else { + // L'insertion a échoué, renvoyez un utilisateur vide pour indiquer l'échec + return null; + } + } + + public function getUtilisateurByEmail(string $email) + { + $con = new Connection(DB_HOST, DB_USER, DB_PASS); + $gate = new AlumniGateway($con); + // Récupérez l'utilisateur avec l'email donné en utilisant AlumniGateway + $utilisateur = $gate->findByEmail($email); + if ($utilisateur instanceof Alumni) { + // L'utilisateur existe, retournez-le + return $utilisateur; + } else { + // L'utilisateur n'existe pas, renvoyez null + return null; + } + } + + public function getEvenement(): array { $gate = new EvenementGateway($this->con); @@ -97,8 +98,7 @@ class UtilisateurModele $evenement = array(); - foreach($data as $row) - { + foreach ($data as $row) { $evenement[] = new Evenement( $row['id'], $row['organisateur'], @@ -135,9 +135,9 @@ class UtilisateurModele $gate->deleteEvenement($id); } - public function getEvenementById(int $id) : Evenement + public function getEvenementById(int $id): Evenement { - $gate = new EvenementGateway($this->con); + $gate = new EvenementGateway($this->con); $data = $gate->findById($id); @@ -154,16 +154,15 @@ class UtilisateurModele return $evenement; } - public function getEvenementByTitre(string $titre) : array + public function getEvenementByTitre(string $titre): array { - $gate = new EvenementGateway($this->con); + $gate = new EvenementGateway($this->con); $data = $gate->findByTitle($titre); $evenement = array(); - foreach($data as $row) - { + foreach ($data as $row) { $evenement[] = new Evenement( $row['id'], $row['organisateur'], @@ -177,4 +176,29 @@ class UtilisateurModele return $evenement; } + + public function getUtilisateurByPage(string $page) + { + $con = new Connection(DB_HOST, DB_USER, DB_PASS); + $gate = new ProfilGateway($con); + $data = $gate->userByPage($page, 10); + if($data[0]!=null){ + //Création d'une liste d'objets utilisateurs + $profils = array(); + foreach ($data as $row) { + echo $row['nom']; + $profils[] = new Profil( + $row['nom'], + $row['prenom'], + $row['email'], + $row['cv'] ?? '', + $row['linkedinURL'] ?? '', + $row['githubURL'] ?? '', + $row['portfolioURL'] ?? '' + ); + } + return $profils; + } + return null; + } } \ No newline at end of file diff --git a/php/templates/profil.html b/php/templates/profil.html new file mode 100644 index 0000000..5cd6b0a --- /dev/null +++ b/php/templates/profil.html @@ -0,0 +1,58 @@ + + + + + + Profils des Alumnis + + + +

Les Alumnis :

+ +
+ {% for utilisateur in utilisateurs %} +
+ Image de profil +

{{ utilisateur.prenom }} {{ utilisateur.nom }}

+ Voir le profil +
+ {% else %} +

Aucun profil trouvé.

+ {% endfor %} +
+ + + +