filters($request); $ranges = $this->networkRangeRepository->findAll(); $findings = $this->discoveredHostRepository->findFiltered( $filters['range_id'], $filters['scan_job_id'], $filters['status'], 200, $filters['sort'], $filters['dir'] ); ob_start(); $username = $_SESSION['username'] ?? 'User'; require dirname(__DIR__, 2) . '/templates/discoveries/index.php'; $body = ob_get_clean(); $response->getBody()->write($body); return $response; } public function table(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface { $filters = $this->filters($request); $findings = $this->discoveredHostRepository->findFiltered( $filters['range_id'], $filters['scan_job_id'], $filters['status'], 200, $filters['sort'], $filters['dir'] ); ob_start(); require dirname(__DIR__, 2) . '/templates/discoveries/_table.php'; $body = ob_get_clean(); $response->getBody()->write($body); return $response; } public function merge(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface { $data = $request->getParsedBody(); $hostId = isset($data['host_id']) ? (int)$data['host_id'] : 0; $deviceId = isset($data['device_id']) ? (int)$data['device_id'] : 0; if ($hostId > 0 && $deviceId > 0) { $this->deviceService->mergeDiscoveredHost($hostId, $deviceId); } $referer = $request->getHeaderLine('Referer') ?: '/discoveries'; return $response ->withHeader('Location', $referer) ->withStatus(302); } /** * @return array{range_id: ?int, scan_job_id: ?int, status: ?string, sort: string, dir: string} */ private function filters(ServerRequestInterface $request): array { $query = $request->getQueryParams(); $status = (string)($query['status'] ?? 'new'); $sort = (string)($query['sort'] ?? 'ip'); $dir = strtolower((string)($query['dir'] ?? 'asc')) === 'desc' ? 'desc' : 'asc'; return [ 'range_id' => isset($query['range_id']) && $query['range_id'] !== '' ? (int)$query['range_id'] : null, 'scan_job_id' => isset($query['scan_job_id']) && $query['scan_job_id'] !== '' ? (int)$query['scan_job_id'] : null, 'status' => $status === 'all' ? null : $status, 'sort' => $sort, 'dir' => $dir, ]; } }