From 232f3f9054ff4d61dbe33c66061b758258a04a12 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Tue, 5 Aug 2025 20:35:32 +0500 Subject: feat: display last message timestamp --- web/index.php | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/web/index.php b/web/index.php index 4a18320..f66f0d6 100644 --- a/web/index.php +++ b/web/index.php @@ -123,9 +123,36 @@ $link = match (true) { }; if (!isset($user) && !isset($room)) { - $stmt = $db->query('SELECT name FROM rooms ORDER BY joined_at, departed_at DESC'); + $stmt = $db->query('SELECT r.name, r.departed_at, + ( + SELECT MAX(m.sent_at) + FROM messages m + WHERE m.room_id = r.id + ) AS last_message_at + FROM rooms r + ORDER BY r.joined_at DESC + '); $stmt->execute(); $rooms = $stmt->fetchAll(PDO::FETCH_ASSOC); + + foreach ($rooms as &$r) { + $t = $r['last_message_at']; + if (!$t) { + $r['last_message_at'] = 'no messages yet'; + continue; + } + $diff = time() - strtotime($t); + $t = match (true) { + $diff < 60 => "$diff seconds ago", + $diff < 3600 => floor($diff / 60) . ' minutes ago', + $diff < 86400 => floor($diff / 3600) . ' hours ago', + $diff < 2592000 => floor($diff / 86400) . ' days ago', + $diff < 31536000 => floor($diff / 2592000) . ' months ago', + default => floor($diff / 31536000) . ' years ago' + }; + $r['last_message_at'] = $t; + } + unset($r); } ?> @@ -229,7 +256,7 @@ if (!isset($user) && !isset($room)) { - + -- cgit v1.2.3