diff options
| author | ilotterytea <iltsu@alright.party> | 2025-08-05 20:35:32 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-08-05 20:35:32 +0500 |
| commit | 232f3f9054ff4d61dbe33c66061b758258a04a12 (patch) | |
| tree | 44ddfd3bb3caf5d00ac740c78747b030fb0fc6f9 | |
| parent | f249d69ea8359e54e70ff6e6ab26ab8e290fd740 (diff) | |
feat: display last message timestamp
| -rw-r--r-- | web/index.php | 31 |
1 files 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); } ?> <!DOCTYPE html> @@ -229,7 +256,7 @@ if (!isset($user) && !isset($room)) { <?php foreach ($rooms as $r): ?> <tr> <td><a href="/?r=<?= urlencode($r['name']) ?>"><?= $r['name'] ?></a></td> - <td><?= '1 minute ago' ?></td> + <td><?= $r['last_message_at'] ?></td> </tr> <?php endforeach; ?> </table> |
