prepare('SELECT id, `nick`, joined_at, departed_at FROM users WHERE `nick` = ?'); $stmt->execute([$user]); $user = $stmt->fetch(PDO::FETCH_ASSOC) ?: null; if (!$user) { http_response_code(404); exit("User not found."); } } if (isset($room)) { $room = urldecode($room); $stmt = $db->prepare('SELECT id, `name`, joined_at, departed_at FROM rooms WHERE `name` = ?'); $stmt->execute([$room]); $room = $stmt->fetch(PDO::FETCH_ASSOC) ?: null; if (!$room) { http_response_code(404); exit("Room not found."); } $room['encoded'] = urlencode($room['name']); } if (isset($date)) { $user_id = $user ? $user['id'] : "m.user_id"; $room_id = $room ? $room['id'] : "m.room_id"; $room_column = !$room ? ", r.name AS room" : ""; $stmt = $db->prepare("SELECT m.id, u.nick, m.command, m.params, m.tags, m.sent_at $room_column FROM messages m JOIN rooms r ON r.id = m.room_id JOIN users u ON u.id = m.user_id WHERE m.room_id = $room_id AND m.user_id = $user_id AND m.sent_at BETWEEN ? AND DATE_ADD(?, INTERVAL 1 DAY) ORDER BY sent_at DESC LIMIT $limit OFFSET $offset "); $stmt->execute([$date, $date]); $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); } else if ($room || $user) { $room_id = isset($room) ? $room['id'] : 'room_id'; $user_id = isset($user) ? $user['id'] : 'user_id'; $stmt = $db->query("SELECT YEAR(sent_at) AS msg_year, MONTH(sent_at) AS msg_month, DAY(sent_at) AS msg_day, COUNT(*) AS msg_count FROM messages WHERE room_id = $room_id AND user_id = $user_id GROUP BY YEAR(sent_at), MONTH(sent_at), DAY(sent_at) ORDER BY YEAR(sent_at) DESC, MONTH(sent_at) DESC, DAY(sent_at) DESC "); $stmt->execute(); $raw_dates = $stmt->fetchAll(PDO::FETCH_ASSOC); $dates = []; foreach ($raw_dates as $rm) { $y = $rm['msg_year']; $m = $rm['msg_month']; $d = $rm['msg_day']; $c = $rm['msg_count']; if (!array_key_exists($y, $dates)) { $dates[$y] = []; } if (!array_key_exists($m, $dates[$y])) { $dates[$y][$m] = []; } $dates[$y][$m][$d] = $c; } } $page_title = (isset($user) ? ($user['nick'] . (isset($room) ? ' in ' : '')) : '') . (isset($room) ? "{$room['name']}" : ''); $link = match (true) { isset($user, $room) => "r={$room['encoded']}&u={$user['nick']}", isset($user) => "u={$user['nick']}", isset($room) => "r={$room['encoded']}", default => "" }; if (!isset($user) && !isset($room)) { $stmt = $db->query('SELECT name FROM rooms ORDER BY joined_at, departed_at DESC'); $stmt->execute(); $rooms = $stmt->fetchAll(PDO::FETCH_ASSOC); } ?>
No messages.
Showing = count($messages) ?> messages on Page = $page + 1 ?>
| Time | Room | Nick | Message |
|---|
| Mo | Tu | We | Th | Fr | Sa | Su |
|---|---|---|---|---|---|---|
| '; if (array_key_exists($day, $days) && $days[$day] > 0) { echo "$day"; } else { echo $day; } echo ' | '; if ((($day + $sw - 1) % 7) == 0 && $day != $dm) echo '||||||
| '; ?> |
There are no rooms. Add one!
| Room | Last message |
|---|---|
| = $r['name'] ?> | = '1 minute ago' ?> |