false, 'error' => 'Nicht autorisiert.']); exit; } if (strtoupper((string) ($_SERVER['REQUEST_METHOD'] ?? 'GET')) !== 'POST') { http_response_code(405); echo json_encode(['ok' => false, 'error' => 'Methode nicht erlaubt.']); exit; } $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; } try { $fields = is_array($payload['fields'] ?? null) ? $payload['fields'] : []; if (($payload['action'] ?? 'create') === 'delete') { $marketId = (int) ($payload['id'] ?? 0); if ($marketId < 1) { throw new InvalidArgumentException('id ist erforderlich.'); } if (($payload['confirmation'] ?? '') !== 'DELETE') { throw new InvalidArgumentException('Die Löschbestätigung muss exakt DELETE lauten.'); } $market = market_management_set_market_archive($pdo, $marketId, true); } elseif (($payload['action'] ?? 'create') === 'update') { $marketId = (int) ($payload['id'] ?? 0); if ($marketId < 1) { throw new InvalidArgumentException('id ist erforderlich.'); } $market = market_management_update_market($pdo, $marketId, [ 'name' => $fields['name'] ?? null, 'category_id' => $fields['category_id'] ?? null, 'website_url' => $fields['website_url'] ?? null, ]); } else { $market = market_management_create_market($pdo, [ 'name' => $fields['name'] ?? null, 'category_id' => $fields['category_id'] ?? null, 'website_url' => $fields['website_url'] ?? null, ]); } echo json_encode(['ok' => true, 'market' => $market], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); } catch (Throwable $error) { http_response_code(422); echo json_encode(['ok' => false, 'error' => $error->getMessage()], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); }