getLogs($filters, 1, 100000); $data = $result['rows']; $fields = ['ID','ReceivedAt','FromHost','Facility','Priority','SysLogTag','Message']; break; case 'daily': $data = $sq->getDailyStats($period); $fields = ['Datum','Berichten','Hosts']; break; case 'hosts': $data = $sq->getHostStats($period); $fields = ['Host','Aantal']; break; case 'countries': $data = $sq->getCountryStats($period); $fields = ['Code','Aantal']; break; case 'severity': $data = $sq->getSeverityStats($period); $fields = ['Priority','Severity','Aantal']; array_walk($data, fn(&$r) => $r['SeverityName'] = SyslogQuery::severityName((int)$r['Priority'])); $fields = ['Priority','SeverityName','Aantal']; break; default: $data = []; $fields = []; } if ($format === 'json') { header('Content-Type: application/json; charset=utf-8'); header("Content-Disposition: attachment; filename=\"{$filename}\""); echo json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); exit; } header('Content-Type: text/csv; charset=utf-8'); header("Content-Disposition: attachment; filename=\"{$filename}\""); echo "\xEF\xBB\xBF"; // BOM for Excel UTF-8 $out = fopen('php://output', 'w'); fputcsv($out, $fields, ';'); foreach ($data as $row) { $line = []; foreach ($fields as $f) { $line[] = $row[$f] ?? ''; } fputcsv($out, $line, ';'); } fclose($out);