Новый класс Chat; session_start() уехал централизованно в конфиг с проверкой на существование ессии перед открытием. Уборка deprecated-артефактов. Работа по внедрению #42.
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace Battles;
|
||||
|
||||
use Battles\Database\DBPDO;
|
||||
use DateTime;
|
||||
use Exception;
|
||||
|
||||
class Chat
|
||||
{
|
||||
private DateTime $d;
|
||||
private DBPDO $db;
|
||||
|
||||
public function __construct(DBPDO $db)
|
||||
{
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
public function getMessages(): ?string
|
||||
{
|
||||
$query = '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';
|
||||
$chatrows = $this->db->ofetchALL($query, [User::$current->getId(), User::$current->getId()]);
|
||||
$wrappedMessage = null;
|
||||
foreach ($chatrows as $row) {
|
||||
try {
|
||||
$this->d = new DateTime($row->msgdate);
|
||||
} catch (Exception $e) {
|
||||
echo 'Chat Datetime Whoops!';
|
||||
}
|
||||
$m = htmlspecialchars($row->msg);
|
||||
if ($row->type === 'sys') {
|
||||
$wrappedMessage .= sprintf('<span class="chatsys">%s %s</span><br>', $this->d->format('H:i'), $m);
|
||||
} elseif ($row->rid == User::$current->getId()) {
|
||||
if ($row->type == 'sms') {
|
||||
$wrappedMessage .= sprintf('<span class="chatsms">%s Телеграмма от [%s]: %s</span><br>', $this->d->format('d.m.Y H:i'), $row->sender, $m);
|
||||
} elseif ($row->type == 'private') {
|
||||
$wrappedMessage .= sprintf('<span class="chatprivate">%s [%s] → [%s]: %s</span><br>', $this->d->format('H:i'), $row->sender, $row->receiver, $m);
|
||||
} else {
|
||||
$wrappedMessage .= sprintf('%s [%s] → [%s]: %s<br>', $this->d->format('H:i'), $row->sender, $row->receiver, $m);
|
||||
}
|
||||
} else {
|
||||
$wrappedMessage .= sprintf('%s [%s]: %s<br>', $this->d->format('H:i'), $row->sender, $m);
|
||||
}
|
||||
}
|
||||
return $wrappedMessage;
|
||||
}
|
||||
|
||||
public function addMessage($msg)
|
||||
{
|
||||
$this->db->execute('insert into chat (user_id, msg) values (?,?)', [User::$current->getId(), $msg]);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user