Files
deskhub/DeskHub-Webseite/api/staff/v1/crash_report.php
T
2026-10-21 16:44:55 +00:00

24 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/common.php';
/**
* Absturzbericht der Android-App (wird beim nächsten Start nach der Anmeldung gesendet) und im Aktivitätsprotokoll abgelegt.
* POST {appVersion, device, trace}
*/
api_require_method('POST');
$staff = api_require_staff();
$body = api_request_body();
$trace = trim((string) ($body['trace'] ?? ''));
if ($trace === '') api_error(422, 'TRACE_REQUIRED', 'Kein Absturzbericht übermittelt.');
$line = 'App-Absturz v' . mb_substr((string) ($body['appVersion'] ?? '?'), 0, 12) . ' ' . mb_substr((string) ($body['device'] ?? '?'), 0, 30) . ': ' . mb_substr(preg_replace('/\s+/', ' ', $trace), 0, 190);
// Pro Mitarbeiter höchstens 20 Berichte pro Tag (Schutz vor Absturzschleifen); der Zähler steht als "Datum:Anzahl" in einer Einstellung je Mitarbeiter
$key = 'crash_count_' . (int) $staff['id'];
[$day, $n] = array_pad(explode(':', (string) get_setting($key, '')), 2, '0');
$n = $day === date('Ymd') ? (int) $n : 0;
if ($n < 20) {
set_setting($key, date('Ymd') . ':' . ($n + 1));
audit_log((int) $staff['id'], $line);
}
api_json(['received' => true], 201);