page fav + fix accueil

pull/21/head
Maxime ROCHER 5 months ago
parent 09f7c0c0ca
commit 0df7d9de8e

@ -1,5 +1,11 @@
@import url('style.css'); /* Import de style.css */ @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 */ /* Conteneur général pour les citations */
.citations-section { .citations-section {
display: flex; display: flex;

@ -7,7 +7,7 @@ Class FrontControler{
private $listAction; 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; private Connection $co;
@ -16,8 +16,8 @@ Class FrontControler{
$this->listAction = ['visitor' => array('accueil','search','quote','login','signin', 'favorite'), $this->listAction = ['visitor' => array('accueil','search','quote','login','signin'),
'user' => array('quiz','commentary','logout'), 'user' => array('quiz','commentary','logout', 'favorite'),
'admin' => array('null')]; 'admin' => array('null')];
$dVueEreur = []; $dVueEreur = [];
@ -40,7 +40,7 @@ Class FrontControler{
$router->map('GET|POST', '/quote/[i:idQuote]', 'VisitorControler','quote'); $router->map('GET|POST', '/quote/[i:idQuote]', 'VisitorControler','quote');
$router->map('GET|POST', '/login', 'VisitorControler','login'); $router->map('GET|POST', '/login', 'VisitorControler','login');
$router->map('GET|POST', '/signin', 'VisitorControler','signin'); $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'); $router->map('GET|POST', '/quiz/[i:id]?', 'QuizControler','quiz');

@ -1,23 +1,29 @@
<?php <?php
namespace Controleur; namespace Controleur;
Class UserControler{ use Gateway\QuoteGateway;
public function quiz(){ class UserControler {
private QuoteGateway $quoteGateway;
public function __construct() {
global $co;
$this->quoteGateway = new QuoteGateway($co);
}
public function quiz() {
global $vues; global $vues;
require_once $vues['quiz']; require_once $vues['quiz'];
} }
public function favorits() { public function favorite(array $args) {
global $vues; global $vues;
$user = $_SESSION['username']; $userId = 1;
$idUser = $this->userGateway->getIdUser($user);
$suggestions = $this->favoritsGateway->getFavorits(0, 'fr'); $favorites = $this->quoteGateway->getFavorites($userId);
require_once $vues['favorits']; require_once $vues['favorite'];
} }
} }

@ -30,11 +30,8 @@ class VisitorControler {
public function quote(array $arg) { public function quote(array $arg) {
global $vues; global $vues;
<<<<<<< HEAD
$id = $arg['idQuote'] ?? 1;
=======
$id=$arg['idQuote']; $id=$arg['idQuote'];
>>>>>>> refs/remotes/origin/master
$q = $this->qMod->searchId($id); $q = $this->qMod->searchId($id);
require_once $vues['quote']; require_once $vues['quote'];
} }
@ -48,9 +45,4 @@ class VisitorControler {
global $vues; global $vues;
require_once $vues['signin']; require_once $vues['signin'];
} }
public function favorite() {
global $vues;
require_once $vues['favorite'];
}
} }

@ -129,6 +129,27 @@ Class QuoteGateway{
return $result; 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 [];
}
}
} }
?> ?>

@ -11,21 +11,5 @@ class AccueilGateway {
$this->con = $con; $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();
}
} }

@ -5,6 +5,7 @@ global $twig;
echo $twig->render('head.html.twig', [ echo $twig->render('head.html.twig', [
'title' => "Accueil", 'title' => "Accueil",
'style' => "public/styles/styleAccueil.css", 'style' => "public/styles/styleAccueil.css",
'scripts' => array("public/script/theme-toggle.js")
]); ]);

@ -1,25 +1,28 @@
<?php <?php
global $twig; global $twig;
// Rendu de l'en-tête
echo $twig->render('head.html.twig', [ echo $twig->render('head.html.twig', [
'title' => "Accueil", 'title' => "Favoris",
'style' => "public/styles/styleAccueil.css", 'style' => "public/styles/styleAccueil.css",
'scripts' => array("public/script/theme-toggle.js")
]); ]);
// Rendu du bandeau
echo $twig->render('bandeau.html.twig'); echo $twig->render('bandeau.html.twig');
echo "<h2>Favorits</h2>"; if (!empty($favorites)) {
echo "<div class='suggestions-container'>"; echo "<h2>Vos favoris</h2>";
foreach ($suggestions as $suggestion) { echo "<div class='suggestions-container'>";
echo $twig->render('favorits.html.twig', [ foreach ($favorites as $favorite) {
'quote' => $suggestion['content'], echo $twig->render('suggestion.html.twig', [
'movie' => $suggestion['title'], 'quote' => $favorite['content'],
'character' => $suggestion['caracter'], 'movie' => $favorite['title'],
'year' => $suggestion['dates'], 'character' => $favorite['caracter'],
'imagePath' => $suggestion['imgpath'] 'year' => $favorite['dates'],
]); 'imagePath' => $favorite['imgpath']
]);
}
echo "</div>";
} else {
echo "<p>Vous n'avez pas encore de favorits</p>";
} }
echo "</div>";
?> ?>
Loading…
Cancel
Save