71 lines
1.8 KiB
PHP
71 lines
1.8 KiB
PHP
<?php
|
|
|
|
class ChatModel
|
|
{
|
|
public function insert($sender, $receiver, $message)
|
|
{
|
|
$db = Database::getInstance()->getConnection();
|
|
|
|
$stmt = $db->prepare("
|
|
INSERT INTO chat (user_sender, user_empfaenger, nachricht, gelesen)
|
|
VALUES (?, ?, ?, 0)
|
|
");
|
|
|
|
$stmt->bind_param("iis", $sender, $receiver, $message);
|
|
$stmt->execute();
|
|
}
|
|
|
|
public function getMessagesBetweenUsers($user1, $user2)
|
|
{
|
|
$db = Database::getInstance()->getConnection();
|
|
|
|
$stmt = $db->prepare("
|
|
SELECT * FROM chat
|
|
WHERE (user_sender = ? AND user_empfaenger = ?)
|
|
OR (user_sender = ? AND user_empfaenger = ?)
|
|
ORDER BY id ASC
|
|
");
|
|
|
|
$stmt->bind_param("iiii", $user1, $user2, $user2, $user1);
|
|
$stmt->execute();
|
|
return $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
|
|
}
|
|
|
|
public function markAsRead($sender, $receiver)
|
|
{
|
|
$db = Database::getInstance()->getConnection();
|
|
|
|
$stmt = $db->prepare("
|
|
UPDATE chat SET gelesen = 1
|
|
WHERE user_sender = ? AND user_empfaenger = ?
|
|
");
|
|
|
|
$stmt->bind_param("ii", $sender, $receiver);
|
|
$stmt->execute();
|
|
}
|
|
|
|
public function getUnreadCounts($receiverId)
|
|
{
|
|
$db = Database::getInstance()->getConnection();
|
|
|
|
$stmt = $db->prepare("
|
|
SELECT user_sender, COUNT(*) AS unread
|
|
FROM chat
|
|
WHERE user_empfaenger = ? AND gelesen = 0
|
|
GROUP BY user_sender
|
|
");
|
|
|
|
$stmt->bind_param("i", $receiverId);
|
|
$stmt->execute();
|
|
|
|
$rows = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
|
|
|
|
$out = [];
|
|
foreach ($rows as $r) {
|
|
$out[$r['user_sender']] = $r['unread'];
|
|
}
|
|
|
|
return $out;
|
|
}
|
|
}
|