From 0df7d9de8e4b17f7a450c56b63d45d2506305b97 Mon Sep 17 00:00:00 2001 From: Rocher Date: Wed, 13 Nov 2024 19:20:34 +0100 Subject: [PATCH] page fav + fix accueil --- public/styles/styleAccueil.css | 6 ++++++ src/Controleur/FrontControler.php | 8 +++---- src/Controleur/UserControler.php | 26 ++++++++++++++--------- src/Controleur/VisitorControler.php | 10 +-------- src/Gateway/QuoteGateway.php | 21 ++++++++++++++++++ src/Gateway/favoritsGateway.php | 18 +--------------- vue/accueil.php | 1 + vue/favorits.php | 33 ++++++++++++++++------------- 8 files changed, 68 insertions(+), 55 deletions(-) diff --git a/public/styles/styleAccueil.css b/public/styles/styleAccueil.css index e0976f3..3f5c253 100644 --- a/public/styles/styleAccueil.css +++ b/public/styles/styleAccueil.css @@ -1,5 +1,11 @@ @import url('style.css'); /* Import de style.css */ +h2 { + text-align: center; + font-size: 2em; + margin: 20px 0; +} + /* Conteneur général pour les citations */ .citations-section { display: flex; diff --git a/src/Controleur/FrontControler.php b/src/Controleur/FrontControler.php index 2938d4a..ba8584d 100644 --- a/src/Controleur/FrontControler.php +++ b/src/Controleur/FrontControler.php @@ -7,7 +7,7 @@ Class FrontControler{ private $listAction; - private string $role = 'admin'; //Mettre en admin le temps de créer les comptes + private string $role = 'user'; //Mettre en admin le temps de créer les comptes private Connection $co; @@ -16,8 +16,8 @@ Class FrontControler{ - $this->listAction = ['visitor' => array('accueil','search','quote','login','signin', 'favorite'), - 'user' => array('quiz','commentary','logout'), + $this->listAction = ['visitor' => array('accueil','search','quote','login','signin'), + 'user' => array('quiz','commentary','logout', 'favorite'), 'admin' => array('null')]; $dVueEreur = []; @@ -40,7 +40,7 @@ Class FrontControler{ $router->map('GET|POST', '/quote/[i:idQuote]', 'VisitorControler','quote'); $router->map('GET|POST', '/login', 'VisitorControler','login'); $router->map('GET|POST', '/signin', 'VisitorControler','signin'); - $router->map('GET|POST', '/favorite', 'VisitorControler','favorite'); + $router->map('GET|POST', '/favorite', 'UserControler','favorite'); $router->map('GET|POST', '/quiz/[i:id]?', 'QuizControler','quiz'); diff --git a/src/Controleur/UserControler.php b/src/Controleur/UserControler.php index 1f8d264..2bcd4b6 100644 --- a/src/Controleur/UserControler.php +++ b/src/Controleur/UserControler.php @@ -1,23 +1,29 @@ quoteGateway = new QuoteGateway($co); + } + + public function quiz() { global $vues; require_once $vues['quiz']; } - public function favorits() { + public function favorite(array $args) { global $vues; + + $userId = 1; - $user = $_SESSION['username']; - - $idUser = $this->userGateway->getIdUser($user); + $favorites = $this->quoteGateway->getFavorites($userId); - - $suggestions = $this->favoritsGateway->getFavorits(0, 'fr'); - - require_once $vues['favorits']; + require_once $vues['favorite']; } } diff --git a/src/Controleur/VisitorControler.php b/src/Controleur/VisitorControler.php index a446714..666748a 100644 --- a/src/Controleur/VisitorControler.php +++ b/src/Controleur/VisitorControler.php @@ -30,11 +30,8 @@ class VisitorControler { public function quote(array $arg) { global $vues; -<<<<<<< HEAD - $id = $arg['idQuote'] ?? 1; -======= + $id=$arg['idQuote']; ->>>>>>> refs/remotes/origin/master $q = $this->qMod->searchId($id); require_once $vues['quote']; } @@ -48,9 +45,4 @@ class VisitorControler { global $vues; require_once $vues['signin']; } - - public function favorite() { - global $vues; - require_once $vues['favorite']; - } } diff --git a/src/Gateway/QuoteGateway.php b/src/Gateway/QuoteGateway.php index 778e6e2..9f531c0 100644 --- a/src/Gateway/QuoteGateway.php +++ b/src/Gateway/QuoteGateway.php @@ -129,6 +129,27 @@ Class QuoteGateway{ return $result; } + public function getFavorites(string $userId): array { + $query = "SELECT q.id_quote, q.content, c.caracter, i.imgPath, s.title, s.dateS, q.likes, q.langue + FROM Favorite f + JOIN Quote q ON f.quote = q.id_quote + JOIN Caracter c ON c.id_caracter = q.id_caracter + JOIN Source s ON s.id_source = q.id_source + JOIN Image i ON c.id_img = i.id_img + WHERE f.users = :userId"; + + try { + $this->con->executeQuery($query, [ + ':userId' => [$userId, PDO::PARAM_STR] + ]); + return $this->con->getResults(); + } catch (PDOException $e) { + echo "Erreur dans getFavorites: " . $e->getMessage(); + return []; + } + } + + } ?> diff --git a/src/Gateway/favoritsGateway.php b/src/Gateway/favoritsGateway.php index dc2ce93..4c8fa99 100644 --- a/src/Gateway/favoritsGateway.php +++ b/src/Gateway/favoritsGateway.php @@ -11,21 +11,5 @@ class AccueilGateway { $this->con = $con; } - public function getSuggestions(int $numpage, string $language): array { - - $username = $_SESSION['username']; - $userId = $this->userGateway->getIdUser($username); - - $query = "SELECT q.id_quote, q.content, c.caracter, i.imgPath, s.title, s.dateS, q.likes, q.langue - FROM Quote q - JOIN Favorite f ON f.quote = q.id_quote - JOIN Caracter c ON c.id_caracter = q.id_caracter - JOIN Source s ON s.id_source = q.id_source - JOIN Image i ON c.id_img = i.id_img - WHERE q.isValide = true - AND q.langue = :language - AND f.users = :userId"; - - return $this->con->getResults(); - } + } diff --git a/vue/accueil.php b/vue/accueil.php index 1764696..96f2d0b 100644 --- a/vue/accueil.php +++ b/vue/accueil.php @@ -5,6 +5,7 @@ global $twig; echo $twig->render('head.html.twig', [ 'title' => "Accueil", 'style' => "public/styles/styleAccueil.css", + 'scripts' => array("public/script/theme-toggle.js") ]); diff --git a/vue/favorits.php b/vue/favorits.php index b0632c7..f0c944e 100644 --- a/vue/favorits.php +++ b/vue/favorits.php @@ -1,25 +1,28 @@ render('head.html.twig', [ - 'title' => "Accueil", + 'title' => "Favoris", 'style' => "public/styles/styleAccueil.css", + 'scripts' => array("public/script/theme-toggle.js") ]); -// Rendu du bandeau echo $twig->render('bandeau.html.twig'); -echo "

Favorits

"; -echo "
"; -foreach ($suggestions as $suggestion) { - echo $twig->render('favorits.html.twig', [ - 'quote' => $suggestion['content'], - 'movie' => $suggestion['title'], - 'character' => $suggestion['caracter'], - 'year' => $suggestion['dates'], - 'imagePath' => $suggestion['imgpath'] - ]); +if (!empty($favorites)) { + echo "

Vos favoris

"; + echo "
"; + foreach ($favorites as $favorite) { + echo $twig->render('suggestion.html.twig', [ + 'quote' => $favorite['content'], + 'movie' => $favorite['title'], + 'character' => $favorite['caracter'], + 'year' => $favorite['dates'], + 'imagePath' => $favorite['imgpath'] + ]); + } + echo "
"; +} else { + echo "

Vous n'avez pas encore de favorits

"; } -echo "
"; -?> \ No newline at end of file +?>