Файл: upload/core/elements/dialog_list.php
Строк: 26
<?php
$userId = $GLOBALS['userId'];
$activePeer = $GLOBALS['activePeer'];
$res = dbquery("
SELECT
CASE
WHEN sender_id = ? THEN receiver_id
ELSE sender_id
END AS peer_id,
MAX(id) AS last_message_id
FROM messages
WHERE sender_id = ? OR receiver_id = ?
GROUP BY peer_id
ORDER BY last_message_id DESC
", [$userId, $userId, $userId]);
$messages = [];
while ($row = FetchAssoc($res)) {
$peerId = $row['peer_id'];
// Последнее сообщение
$lastMsg = FetchAssoc(dbquery("
SELECT k_text
FROM messages
WHERE id = ?
", [$row['last_message_id']]));
// Данные собеседника
$peer = FetchAssoc(dbquery("
SELECT *
FROM users
WHERE id = ?
", [$peerId]));
// Непрочитанные
$unread = FetchAssoc(dbquery("
SELECT COUNT(*) AS cnt
FROM messages
WHERE sender_id = ?
AND receiver_id = ?
AND readed = 0
", [$peerId, $userId]));
$messages[] = [
'active' => ($activePeer == $peerId),
'peer' => [
'id' => $peerId,
'avatar' => GetAvatar($peer['avatar']),
'login' => $peer['login'],
'online' => onlineDot($peer['id'], 'nick-online')
],
'unread' => intval($unread['cnt']),
'preview' => chars(bbnonmes($lastMsg['k_text']))
];
}
// Рендер компонента
$messages_cmp = $view->render('components/messages/list.html', [
'messages' => $messages,
'home' => homeLink()
]);
?>