push current stand

This commit is contained in:
WummerMIB
2025-12-05 08:37:52 +01:00
parent 00bcb5afec
commit 075465e56b
7 changed files with 135 additions and 60 deletions
+49 -29
View File
@@ -1,50 +1,70 @@
<?php
class ChatModel {
public $senderID;
public $empfaengerID;
public $nachricht;
// Nachricht in DB speichern
public function insert() {
class ChatModel
{
public function insert($sender, $receiver, $message)
{
$db = Database::getInstance()->getConnection();
$stmt = $db->prepare("
INSERT INTO chat (user_sender, user_empfaenger, nachricht)
VALUES (?, ?, ?)
INSERT INTO chat (user_sender, user_empfaenger, nachricht, gelesen)
VALUES (?, ?, ?, 0)
");
if (!$stmt) {
throw new Exception("Fehler beim Vorbereiten der DB-Anfrage: " . $db->error);
}
$stmt->bind_param("iis", $this->senderID, $this->empfaengerID, $this->nachricht);
if (!$stmt->execute()) {
throw new Exception("Fehler beim Einfügen in die DB: " . $stmt->error);
}
return true;
$stmt->bind_param("iis", $sender, $receiver, $message);
$stmt->execute();
}
// Nachrichten zwischen zwei Usern abrufen
public function getMessagesBetweenUsers($user1, $user2) {
public function getMessagesBetweenUsers($user1, $user2)
{
$db = Database::getInstance()->getConnection();
$stmt = $db->prepare("
SELECT * FROM chat
WHERE (user_sender = ? AND user_empfaenger = ?)
SELECT * FROM chat
WHERE (user_sender = ? AND user_empfaenger = ?)
OR (user_sender = ? AND user_empfaenger = ?)
ORDER BY id ASC
");
if (!$stmt) {
throw new Exception("Fehler beim Vorbereiten der DB-Abfrage: " . $db->error);
}
$stmt->bind_param("iiii", $user1, $user2, $user2, $user1);
$stmt->execute();
$result = $stmt->get_result();
return $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
}
return $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;
}
}