Paaxio 1.0
Plateforme de streaming musical - SAE IUT Bayonne
Chargement...
Recherche...
Aucune correspondance
controller_message.class.php
Aller à la documentation de ce fichier.
1<?php
2
29
30 public function __construct(\Twig\Environment $twig, \Twig\Loader\FilesystemLoader $loader)
31 {
32 parent::__construct($loader, $twig);
33 }
34
38 public function lister()
39 {
40 $this->requireAuth();
41 $myEmail = $_SESSION['user_email']; // On suppose que l'email est stocké en session
42
43 $messageDAO = new MessageDAO($this->getPDO());
44 $conversations = $messageDAO->getConversations($myEmail);
45
46 $template = $this->getTwig()->load('message_liste.html.twig');
47 echo $template->render([
48 'page' => ['title' => 'Mes Messages', 'name' => 'messages'],
49 'contacts' => $conversations
50 ]);
51 }
52
56 public function conversation()
57 {
58 $this->requireAuth();
59 $myEmail = $_SESSION['user_email']; // Email de l'utilisateur connecté
60
61 $contactPseudo = $this->getGet()['contact'] ?? null;
62
63 if (!$contactPseudo) {
64 $this->redirectTo('message', 'lister');
65 }
66
67 $utilisateurDAO = new UtilisateurDAO($this->getPDO());
68 $contact = $utilisateurDAO->findByPseudo($contactPseudo); // Recherche par pseudo
69
70 if (!$contact) {
71 $this->redirectTo('message', 'lister');
72 }
73
74 $contactEmail = $contact->getEmailUtilisateur();
75
76 if ($myEmail === $contactEmail) {
77 $this->redirectTo('message', 'lister');
78 return;
79 }
80
81 $messageDAO = new MessageDAO($this->getPDO());
82
83 if ($this->getPost() && isset($this->getPost()['contenu'])) {
84 $contenu = trim($this->getPost()['contenu']);
85 if (!empty($contenu)) {
86 $me = $utilisateurDAO->find($myEmail);
87 $nouveauMessage = new Message(
88 null,
89 $contenu,
90 new DateTime(),
91 false,
92 $me,
93 $contact
94 );
95 $messageDAO->create($nouveauMessage);
96
97 $this->redirectTo('message', 'conversation', ['contact' => $contact->getPseudoUtilisateur()]);
98 }
99 }
100
101 $messages = $messageDAO->getMessagesConversation($myEmail, $contactEmail);
102
103 foreach ($messages as $msg) {
104 // Si le message m'est destiné ET qu'il n'est pas encore lu
105 if ($msg->getEmailDestinataire()->getEmailUtilisateur() === $myEmail && !$msg->getEstLu()) {
106 // On met à jour en base de données
107 $messageDAO->markAsRead($msg->getIdMessage());
108 // On met à jour l'objet pour la vue courante
109 $msg->setEstLu(true);
110 }
111 }
112
113 $template = $this->getTwig()->load('message_conversation.html.twig');
114 echo $template->render([
115 'page' => ['title' => 'Discussion avec ' . $contact->getPseudoUtilisateur()],
116 'contact' => $contact,
117 'messages' => $messages,
118 'myEmail' => $myEmail
119 ]);
120 }
121}
Contrôleur dédié à la gestion des messages.
__construct(\Twig\Environment $twig, \Twig\Loader\FilesystemLoader $loader)
conversation()
Affiche une discussion précise et gère l'envoi d'un nouveau message.
lister()
Affiche la liste des conversations de l'utilisateur connecté.
Classe de base pour tous les contrôleurs de l'application.
getPost()
Récupère les données POST.
Twig Environment $twig
redirectTo(string $controller, string $method, array $params=[])
Redirige vers un contrôleur et une méthode donnés.
getGet()
Récupère les données GET.
requireAuth(string $controller='', string $method='', array $params=[])
Exige que l'utilisateur soit authentifié.
Twig Loader FilesystemLoader $loader
getPDO()
Récupère la connexion PDO.
getTwig()
Récupère l'environnement Twig.