-.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')]);