33 lines
1.2 KiB
PHP
33 lines
1.2 KiB
PHP
<?php
|
|
/** admin2/api/events.php — Recent relay events (paginated). */
|
|
require_once __DIR__ . '/../lib/helpers.php';
|
|
$pdo = db();
|
|
|
|
$limit = min(200, intval($_GET['limit'] ?? 50));
|
|
$offset = intval($_GET['offset'] ?? 0);
|
|
$kind = $_GET['kind'] ?? '';
|
|
|
|
$where = [];
|
|
$params = [];
|
|
if ($kind !== '') { $where[] = 'kind = ?'; $params[] = intval($kind); }
|
|
$where_sql = $where ? 'WHERE ' . implode(' AND ', $where) : '';
|
|
|
|
$rows = $pdo->prepare("SELECT e.id, e.pubkey, e.kind, e.created_at, e.content,
|
|
p.name, p.display_name
|
|
FROM events e
|
|
LEFT JOIN profiles p ON p.pubkey = e.pubkey
|
|
$where_sql
|
|
ORDER BY e.created_at DESC LIMIT $limit OFFSET $offset");
|
|
$rows->execute($params);
|
|
$events = $rows->fetchAll();
|
|
|
|
foreach ($events as &$e) {
|
|
$e['created_at'] = date('Y-m-d H:i:s', intval($e['created_at']));
|
|
$e['content'] = substr($e['content'] ?? '', 0, 200);
|
|
// Resolve display name from profiles cache; fall back to truncated pubkey.
|
|
$best = profile_display_name($e);
|
|
$e['display_name'] = $best !== '' ? $best : substr($e['pubkey'] ?? '', 0, 16) . '…';
|
|
}
|
|
|
|
json_response(['events' => $events]);
|