31 $sql =
"INSERT INTO message (dateMessage, contenuMessage, estLuMessage, emailExpediteur, emailDestinataire) VALUES (:dateMessage, :contenuMessage, :estLuMessage, :emailExpediteur, :emailDestinataire)";
32 $stmt = $this->pdo->prepare($sql);
33 $dateEnvoi = $message->
getDateEnvoi()?->format(
'Y-m-d H:i:s');
37 return $stmt->execute([
38 ':dateMessage' => $dateEnvoi ?? date(
'Y-m-d H:i:s'),
40 ':estLuMessage' => $message->
getEstLu() ? 1 : 0,
41 ':emailExpediteur' => $emailExpediteur,
42 ':emailDestinataire' => $emailDestinataire
55 MAX(m.dateMessage) as derniereActivite,
56 SUM(CASE WHEN m.emailDestinataire = :myEmail AND m.emailExpediteur = u.emailUtilisateur AND m.estLuMessage = 0 THEN 1 ELSE 0 END) as nbNonLus
58 JOIN message m ON (u.emailUtilisateur = m.emailExpediteur OR u.emailUtilisateur = m.emailDestinataire)
59 WHERE (m.emailExpediteur = :myEmail OR m.emailDestinataire = :myEmail)
60 AND u.emailUtilisateur != :myEmail
61 GROUP BY u.emailUtilisateur
62 ORDER BY derniereActivite DESC
65 $stmt = $this->pdo->prepare($sql);
66 $stmt->execute([
':myEmail' => $myEmail]);
71 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
74 $user->setNomUtilisateur($row[
'nomUtilisateur']);
75 $user->setPseudoUtilisateur($row[
'pseudoUtilisateur']);
76 $user->setUrlPhotoUtilisateur($row[
'urlPhotoUtilisateur']);
79 'aNonLu' => ($row[
'nbNonLus'] > 0)
94 SELECT COUNT(*) AS nbNonLus
96 WHERE emailDestinataire = :myEmail
100 $stmt = $this->pdo->prepare($sql);
101 $stmt->execute([
':myEmail' => $myEmail]);
102 $row = $stmt->fetch(PDO::FETCH_ASSOC);
104 return $row !==
false ? (int) $row[
'nbNonLus'] : 0;
115 $sql =
"UPDATE message SET estLuMessage = 1 WHERE idMessage = :idMessage";
116 $stmt = $this->pdo->prepare($sql);
117 return $stmt->execute([
':idMessage' => $idMessage]);
128 $sql =
"SELECT * FROM message
129 WHERE (emailExpediteur = :me AND emailDestinataire = :other)
130 OR (emailExpediteur = :other AND emailDestinataire = :me)
131 ORDER BY dateMessage ASC";
133 $stmt = $this->pdo->prepare($sql);
134 $stmt->execute([
':me' => $myEmail,
':other' => $contactEmail]);
137 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
139 $expediteur =
new Utilisateur($row[
'emailExpediteur']);
140 $destinataire =
new Utilisateur($row[
'emailDestinataire']);
143 (
int)$row[
'idMessage'],
144 $row[
'contenuMessage'],
145 new DateTime($row[
'dateMessage']),
146 (
bool)$row[
'estLuMessage'],
getConversations(string $myEmail)
Récupère la liste des utilisateurs avec qui l'utilisateur courant a discuté (Inbox).
__construct(?PDO $pdo=null)
Constructeur de la classe MessageDAO.
markAsRead(int $idMessage)
Marque un message comme lu.
getUnreadCountForUser(string $myEmail)
Retourne le nombre total de messages non lus pour un utilisateur donné.
create(Message $message)
Crée un nouveau message dans la base de données.
getMessagesConversation(string $myEmail, string $contactEmail)
Récupère l'historique de discussion entre deux personnes.
getEmailExpediteur()
Get the value of emailExpediteur.
getEmailDestinataire()
Get $emailDestinataire L'email du destinataire du message.
getDateEnvoi()
Get the value of dateEnvoi.
getContenu()
Get $contenu Le contenu du message.
getEstLu()
Get the value of estLu.