Files
geograsim/v2-platform/mock/api/module/state.php
T
Adminator 1e51ef7def Nachtrag: alle bisher untracked Ordner + hängende Änderungen mit-committen
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/
- 12 code-workspace-Files
- STATUS-*.md
- viele M/D/R-Änderungen an bereits getrackten Files
- .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-08 02:27:02 +02:00

40 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
require_once __DIR__ . '/../../lib/bootstrap.php';
$method = v2_validate_method_in(['GET', 'PUT']);
$auth = v2_auth_require('student');
$studentId = (int) ($auth['sub'] ?? 0);
if ($method === 'GET') {
$slug = $_GET['slug'] ?? '';
if (!$slug) v2_response_error(400, 'missing_slug', 'Parameter "slug" fehlt.');
// Mock: alle State-Files unter mock/uploads/state/<slug>-<sid>.json
$file = __DIR__ . "/../../uploads/state/$slug-$studentId.json";
if (!file_exists($file)) {
mock_log('GET /api/module/state', ['slug' => $slug, 'exists' => false]);
v2_response_ok(['exists' => false]);
}
$data = json_decode(file_get_contents($file), true);
mock_log('GET /api/module/state', ['slug' => $slug, 'exists' => true]);
v2_response_ok([
'exists' => true,
'lastUpdated' => date('c', filemtime($file)),
'state' => $data['state'] ?? [],
'summary' => $data['summary'] ?? '',
]);
}
// PUT
$body = v2_request_body_json_required();
v2_validate_required($body, ['moduleSlug', 'state']);
$slug = (string) $body['moduleSlug'];
$dir = __DIR__ . '/../../uploads/state';
@mkdir($dir, 0775, true);
file_put_contents("$dir/$slug-$studentId.json", json_encode($body, JSON_UNESCAPED_UNICODE));
mock_log('PUT /api/module/state', $body);
v2_response_ok(['ok' => true, 'savedAt' => date('c')]);