summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-08-05 20:35:32 +0500
committerilotterytea <iltsu@alright.party>2025-08-05 20:35:32 +0500
commit232f3f9054ff4d61dbe33c66061b758258a04a12 (patch)
tree44ddfd3bb3caf5d00ac740c78747b030fb0fc6f9
parentf249d69ea8359e54e70ff6e6ab26ab8e290fd740 (diff)
feat: display last message timestamp
-rw-r--r--web/index.php31
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>