true, 'cyber_law' => true, 'privacy' => true, 'digital_security' => true, 'social_media' => true, 'ethics' => true, 'ai_data' => true, ]; $path = dirname(__DIR__) . '/data/quiz-settings.json'; $raw = @file_get_contents($path); if ($raw === false || $raw === '') { echo json_encode(['battleQuizMcq' => []], JSON_UNESCAPED_UNICODE); exit; } $data = json_decode($raw, true); if (!is_array($data)) { echo json_encode(['battleQuizMcq' => []], JSON_UNESCAPED_UNICODE); exit; } $src = $data['battleQuizMcq'] ?? []; if (!is_array($src)) { echo json_encode(['battleQuizMcq' => []], JSON_UNESCAPED_UNICODE); exit; } $out = []; foreach ($src as $q) { if (!is_array($q)) { continue; } $categoryId = trim((string)($q['categoryId'] ?? '')); if ($categoryId === '' || !isset($allowedCats[$categoryId])) { $categoryId = 'cybercrime'; } $text = mb_substr(trim((string)($q['text'] ?? '')), 0, 500); if ($text === '') { continue; } $rawChoices = $q['choices'] ?? []; if (!is_array($rawChoices)) { continue; } $choices = []; for ($i = 0; $i < 3; $i++) { $choices[] = mb_substr(trim((string)($rawChoices[$i] ?? '')), 0, 160); } if (count($choices) !== 3 || in_array('', $choices, true)) { continue; } $ci = (int)($q['correctIndex'] ?? 0); if ($ci < 0 || $ci > 2) { $ci = 0; } $out[] = [ 'categoryId' => $categoryId, 'text' => $text, 'choices' => $choices, 'correctIndex' => $ci, ]; if (count($out) >= 200) { break; } } echo json_encode(['battleQuizMcq' => $out], JSON_UNESCAPED_UNICODE);