false, 'error' => 'Unauthorized']); exit; } $requestMethod = strtoupper((string) ($_SERVER['REQUEST_METHOD'] ?? 'GET')); if ($requestMethod === 'POST') { $csrf = (string) ($_SERVER['HTTP_X_CSRF_TOKEN'] ?? ''); if (!auth_validate_csrf_token($csrf)) { http_response_code(419); echo json_encode(['ok' => false, 'error' => 'Ungültiges Sicherheits-Token']); exit; } $payload = json_decode((string) file_get_contents('php://input'), true); if (!is_array($payload)) { http_response_code(400); echo json_encode(['ok' => false, 'error' => 'Ungültige Anfrage']); exit; } $scope = (string) ($payload['scope'] ?? ''); $id = market_management_require_positive_id($payload['id'] ?? null, 'id'); $fields = is_array($payload['fields'] ?? null) ? $payload['fields'] : []; if ($scope === 'occurrence') { market_management_update_occurrence($pdo, $id, $fields); } elseif ($scope === 'day') { market_management_update_day($pdo, $id, $fields); } else { throw new InvalidArgumentException('Ungültiger Bearbeitungsbereich.'); } echo json_encode(['ok' => true]); exit; } $occurrenceId = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT); if (!is_int($occurrenceId) || $occurrenceId <= 0) { http_response_code(400); echo json_encode(['ok' => false, 'error' => 'Invalid occurrence id']); exit; } $occurrence = market_management_get_occurrence($pdo, $occurrenceId); if ($occurrence === null) { http_response_code(404); echo json_encode(['ok' => false, 'error' => 'Occurrence not found']); exit; } $market = market_management_get_market($pdo, (int) $occurrence['market_definition_id']); if ($market === null) { http_response_code(404); echo json_encode(['ok' => false, 'error' => 'Market not found']); exit; } echo json_encode(['ok' => true, 'market' => $market, 'occurrence' => $occurrence], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);