51 if (!isset($_SESSION[
'user_logged_in']) || !isset($_SESSION[
'user_role'])) {
57 switch ($_SESSION[
'user_role']) {
58 case RoleEnum::Artiste:
64 case RoleEnum::Auditeur:
67 case RoleEnum::Producteur:
90 $redirectUrl = $_GET[
"redirect"] ??
"";
91 $redirectUrl = urldecode($redirectUrl);
94 if (!empty($redirectUrl)) {
97 $redirectUrlDecoded = urldecode($redirectUrl);
98 if (strpos($redirectUrlDecoded,
'://') !==
false || (strlen($redirectUrlDecoded) > 0 && $redirectUrlDecoded[0] !==
'/')) {
104 if (isset($_SESSION[
'user_logged_in']) && $_SESSION[
'user_logged_in']) {
106 if (!empty($redirectUrl)) {
108 header(
'Location: ' . $redirectUrl);
115 $template = $this->
getTwig()->load(
'connect.html.twig');
116 echo $template->render([
118 'title' =>
"Connexion requise",
119 'name' =>
"login_required",
120 'description' =>
"Veuillez vous connecter pour continuer"
122 'session' => $_SESSION,
123 'redirect' => $redirectUrl
136 $template = $this->
getTwig()->load(
'index.html.twig');
137 echo $template->render([
139 'title' =>
"Accueil",
141 'description' =>
"Page d'accueil de Paaxio"
143 'session' => $_SESSION
161 $artistesPopulaires = $aristesDAO->findTrending(8, 7);
164 $chansonsPopulaires = $chansonsDAO->findTrending(8, 7);
167 $chansonsPopulairesAvecArtistePseudo = [];
168 foreach ($chansonsPopulaires as $chanson) {
170 $artistePseudo =
null;
172 if ($chanson->getEmailPublicateur()) {
174 $utilisateur = $utilisateurDAO->find($chanson->getEmailPublicateur());
175 $artistePseudo = $utilisateur ? $utilisateur->getPseudoUtilisateur() :
null;
177 $chansonsPopulairesAvecArtistePseudo[] = [
178 'chanson' => $chanson,
179 'artistePseudo' => $artistePseudo,
185 $albumsPopulaires = $albumDAO->findMostListened(8);
187 $template = $this->
getTwig()->load(
'open_dashboard.html.twig');
188 echo $template->render([
192 'description' =>
"Découvrez de nouveaux artistes, chansons et albums en tendance sur Paaxio!"
194 'session' => $_SESSION,
195 'artistes' => $artistesPopulaires,
196 'chansons' => $chansonsPopulairesAvecArtistePseudo,
197 'albums' => $albumsPopulaires,
214 $artistesSuggere = $utilisateurDAO->findAllArtistes($_SESSION[
'user_email']);
218 $albums = $albumDAO->findAllByArtistEmail($_SESSION[
'user_email']);
224 $totalReproductions = $chansonDAO->getTotalEcoutesByArtiste($_SESSION[
'user_email']);
225 $totalAbonnes = $utilisateurDAO->countFollowers($_SESSION[
'user_email']);
226 $battlesGagnees = $battleDAO->countBattlesWon($_SESSION[
'user_email']);
228 $template = $this->
getTwig()->load(
'artiste_dashboard.html.twig');
229 echo $template->render([
231 'title' => ($_SESSION[
'user_pseudo'] ??
'Artiste') .
' dashboard',
233 'description' =>
"Dashboard de " . ($_SESSION[
'user_pseudo'] ??
'artiste')
235 'session' => $_SESSION,
236 'artistes' => $artistesSuggere,
239 'totalReproductions' => $totalReproductions,
240 'totalAbonnes' => $totalAbonnes,
241 'battlesGagnees' => $battlesGagnees,
258 $artistesSuggere = $utilisateurDAO->findTrending(8, 7);
261 $chansonsPopulaires = $chansonsDAO->findTrending(8, 7);
263 $chansonsAvecArtiste = [];
264 foreach ($chansonsPopulaires as $chanson) {
265 $artistePseudo =
null;
266 if ($chanson->getEmailPublicateur()) {
267 $utilisateur = $utilisateurDAO->find($chanson->getEmailPublicateur());
268 $artistePseudo = $utilisateur ? $utilisateur->getPseudoUtilisateur() :
null;
270 $chansonsAvecArtiste[] = [
271 'chanson' => $chanson,
272 'artistePseudo' => $artistePseudo,
277 $albumsPopulaires = $albumDAO->findMostListened(8);
279 $template = $this->
getTwig()->load(
'auditeur_dashboard.html.twig');
280 echo $template->render([
282 'title' =>
'Mon dashboard',
284 'description' =>
"Dashboard principal"
286 'session' => $_SESSION,
287 'artistes' => $artistesSuggere,
288 'chansons' => $chansonsAvecArtiste,
289 'albums' => $albumsPopulaires,
308 $emailUtilisateur = $_SESSION[
'user_email'] ??
'';
309 $artistesSuggere = $utilisateurDAO->findAllArtistes($emailUtilisateur);
310 $albumsPopulaires = $albumDAO->findMostListened(4);
312 $artistesInscritsSemaine = 0;
313 $artistePlusBatailles =
null;
318 $sqlArtistesSemaine =
"SELECT COUNT(*)
320 INNER JOIN role r ON u.roleUtilisateur = r.idRole
321 WHERE r.typeRole = 'artiste'
322 AND u.dateInscriptionUtilisateur >= DATE_SUB(NOW(), INTERVAL 7 DAY)";
323 $stmtArtistesSemaine =
$pdo->prepare($sqlArtistesSemaine);
324 $stmtArtistesSemaine->execute();
325 $artistesInscritsSemaine = (int)$stmtArtistesSemaine->fetchColumn();
327 $sqlTopBattles =
"SELECT u.pseudoUtilisateur
329 INNER JOIN utilisateur u ON u.emailUtilisateur = v.emailVotee
330 GROUP BY v.emailVotee, u.pseudoUtilisateur
331 ORDER BY COUNT(*) DESC
333 $stmtTopBattles =
$pdo->prepare($sqlTopBattles);
334 $stmtTopBattles->execute();
335 $artistePlusBatailles = $stmtTopBattles->fetchColumn() ?:
null;
336 }
catch (Exception $e) {
337 $artistesInscritsSemaine = 0;
338 $artistePlusBatailles =
null;
341 $template = $this->
getTwig()->load(
'producteur_dashboard.html.twig');
342 echo $template->render([
344 'title' =>
'Accueil producteur',
346 'description' =>
'Tableau de bord producteur pour découvrir de nouveaux talents'
348 'session' => $_SESSION,
349 'artistes' => $artistesSuggere,
350 'albums' => $albumsPopulaires,
352 'artistesInscritsSemaine' => $artistesInscritsSemaine,
353 'artistesTrouves' => count($artistesSuggere),
354 'artistePlusBatailles' => $artistePlusBatailles ?? (isset($artistesSuggere[0]) ? $artistesSuggere[0]->getPseudoUtilisateur() :
'Aucun'),
377 $template = $this->
getTwig()->load(
'test.html.twig');
378 echo $template->render(array(
380 'title' =>
"DATA SESSION",
382 'description' =>
"Session dans Paaxio"
384 'testing' => $_SESSION,
395 $template = $this->
getTwig()->load(
'mentionsLegales.html.twig');
396 echo $template->render(array(
398 'title' =>
"Mentions légales",
399 'name' =>
"mentionsLegales",
400 'description' =>
"Mentions légales de Paaxio"
412 $template = $this->
getTwig()->load(
'conditions_generales.html.twig');
413 echo $template->render(array(
415 'title' =>
"Conditions Générales",
416 'name' =>
"conditions_generales",
417 'description' =>
"Conditions Générales de Paaxio"
425 $template = $this->
getTwig()->load(
'consentement.html.twig');
426 echo $template->render(array(
428 'title' =>
"Consentement à la diffusion et à la republication",
429 'name' =>
"consentement",
430 'description' =>
"Consentement à la diffusion et à la republication de Paaxio"
@ Invite
Rôle administrateur avec tous les privilèges.
Contrôleur dédié à la gestion de la page d'accueil.
openDashboard()
Affiche le tableau de bord public (utilisateurs non connectés ou invités).
__construct(\Twig\Environment $twig, \Twig\Loader\FilesystemLoader $loader)
Constructeur du contrôleur home.
producteurDashboard()
Affiche le tableau de bord du producteur connecté.
homeBienvenue()
Affiche la page d'accueil de bienvenue.
apercuProducteur()
Méthode d'aperçu du dashboard producteur (utile hors session producteur).
connect()
Affiche la page de connexion.
afficherLegales()
Affiche la page des mentions légales.
afficherConsentement()
Affiche la page de consentement à la diffusion et à la republication.
afficherGenerales()
Affiche la page des conditions générales.
afficher()
Affiche la page d'accueil selon le rôle de l'utilisateur.
auditeurDashboard()
Affiche le tableau de bord de l'auditeur connecté.
session()
Affiche les données de session (méthode de débogage).
artisteDashboard()
Affiche le tableau de bord de l'artiste connecté.
Classe de base pour tous les contrôleurs de l'application.
redirectTo(string $controller, string $method, array $params=[])
Redirige vers un contrôleur et une méthode donnés.
Twig Loader FilesystemLoader $loader
getPDO()
Récupère la connexion PDO.
getTwig()
Récupère l'environnement Twig.