From 7fa1720c40ba519bfe44ba164e272858f10304d1 Mon Sep 17 00:00:00 2001 From: lopar Date: Mon, 1 Feb 2021 03:39:50 +0200 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=D0=B8=D0=BB=D0=B8=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D0=B5=D0=B3=D1=80=D0=B0=D1=84,=20=D0=BD?= =?UTF-8?q?=D0=B5=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B4=D0=BE=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=B0=D0=BB=D0=B8=20=D1=87=D0=B0=D1=82...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chat.php | 54 +++++++++++++++++++++++++++------------------------ functions.php | 14 ++++++------- 2 files changed, 36 insertions(+), 32 deletions(-) diff --git a/chat.php b/chat.php index 8bf1d98..427dcfb 100644 --- a/chat.php +++ b/chat.php @@ -5,48 +5,52 @@ * Project name: Battles-Game */ +use Battles\Database\DBPDO; +use Battles\Template; + session_start(); require_once "config.php"; $msg = $_POST['msg'] ?? null; $uid = $_SESSION['uid'] ?? null; if ($msg) { - try { - db::c()->query('INSERT INTO `chat` (`user_id`, `msg`) VALUES (?i, "?s")', $uid, $msg); - } catch (\Krugozor\Database\Mysql\Exception $e) { - echo "
Ошибка: " . $e->getMessage() . "
В файле: " . $e->getFile() . " (" . $e->getLine() . ")
"; - } + $db = new DBPDO(); + $db->execute('INSERT INTO chat (user_id,msg) VALUES (?,?)', [$uid, $msg]); } function show_messages() { - try { - $chat = db::c()->query(' - SELECT - `msg`, - `msgdate`, - (SELECT `login` FROM `users` WHERE `users`.`id` = `user_id`) AS `from`, - `type` - FROM `chat` ORDER BY `id` LIMIT 50'); - while ($message = $chat->fetch_assoc()) { - $d = new DateTime($message['msgdate']); - $m = htmlspecialchars($message['msg']); - if ($message['type'] == 'sys') { /* Системка */ - echo sprintf('%s %s
', $d->format('H:i'), $m); - } elseif ($message['type'] == 'sms') { /* Телеграмма */ - echo sprintf('[Телеграмма]: %s %s
', $d->format('H:i'), $m); - } else { - echo sprintf('%s [%s]: %s
', $d->format('H:i'), $message['from'], $m); + $db = new DBPDO(); + + $chat = $db->ofetchALL('SELECT msg,msgdate,type,s.login AS sender, r.login AS receiver, s.id AS sid, r.id AS rid FROM chat + LEFT JOIN users s on s.id = chat.user_id + LEFT JOIN users r on r.id = chat.receiver_id + WHERE r.id = ? OR r.id IS NULL OR s.id = ? ORDER BY chat.id', [$_SESSION['uid'], $_SESSION['uid']]); + $i = 0; + while ($i < count($chat)) { + $d = new DateTime($chat[$i]->msgdate); + $m = htmlspecialchars($chat[$i]->msg); + if ($chat[$i]->type == 'sys') { /* Системка */ + echo sprintf('%s %s
', $d->format('H:i'), $m); + } elseif ($chat[$i]->rid == $_SESSION['uid']) { /* С указанным получателем */ + if ($chat[$i]->type == 'sms') { /* Телеграмма */ + echo sprintf('%s Телеграмма от [%s]: %s
', $d->format('d.m.Y H:i'), $chat[$i]->sender, $m); + } elseif ($chat[$i]->type == 'private') { /* Приват */ + echo sprintf('%s [%s] → [%s]: %s
', $d->format('H:i'), $chat[$i]->sender, $chat[$i]->receiver, $m); + } else { /* Общак */ + echo sprintf('%s [%s] → [%s]: %s
', $d->format('H:i'), $chat[$i]->sender, $chat[$i]->receiver, $m); } + } else { /* Без указанного получателя */ + echo sprintf('%s [%s]: %s
', $d->format('H:i'), $chat[$i]->sender, $m); } - } catch (\Krugozor\Database\Mysql\Exception $e) { - echo "
Ошибка: " . $e->getMessage() . "
В файле: " . $e->getFile() . " (" . $e->getLine() . ")
"; + $i++; } + unset($i, $chat, $db); } +Template::header('chat'); show_messages(); -\Battles\Template::header('chat'); ?>