filterFromRequest(); $events = EventLog::find($filter, self::LIMIT); $view = new View(); $view->render('layout/base.php', [ 'pageTitle' => 'Ereignisse', 'content' => $this->renderView('ereignisse/index', [ 'events' => $events, 'filter' => $filter, 'channels' => EventLog::channels(), 'watchdog' => NextcloudWatchdog::warning(), 'eventsHtml' => $this->renderView('ereignisse/_body', [ 'events' => $events, ]), ]), ]); } public function indexData(array $params): void { $this->respondWithEvents($this->filterFromRequest()); } public function nextcloudImport(array $params): void { View::redirect('/ereignisse?channel=nextcloud-import'); } /** Datenquelle der bis Issue #165 eigenständigen Nextcloud-Ereignisseite. */ public function nextcloudImportData(array $params): void { $this->respondWithEvents(['channel' => 'nextcloud-import']); } /** * @param array{channel?:string,level?:string} $filter */ private function respondWithEvents(array $filter): void { $events = EventLog::find($filter, self::LIMIT); header('Content-Type: application/json'); echo json_encode([ 'count' => count($events), 'html' => $this->renderView('ereignisse/_body', [ 'events' => $events, ]), ], JSON_UNESCAPED_UNICODE); } /** * @return array{channel?:string,level?:string} */ private function filterFromRequest(): array { $filter = []; $channel = trim((string)($_GET['channel'] ?? '')); if ($channel !== '') { $filter['channel'] = $channel; } $level = trim((string)($_GET['level'] ?? '')); if (in_array($level, EventLog::LEVELS, true)) { $filter['level'] = $level; } return $filter; } }