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');
?>