'invalid_json']); exit; } $lang = $input['lang'] ?? ''; $list = $input['list'] ?? ''; $wordId = (int)($input['wordId'] ?? 0); $userAnswer = trim($input['answer'] ?? ''); $file = listPath($user, $lang, $list); $data = JsonDB::read($file); if (!isset($data['words']) || !is_array($data['words'])) { echo json_encode(['error' => 'list_not_found']); exit; } $correct = false; $updatedWord = null; /** * SESSION STATS INIT */ if (!isset($_SESSION['session_stats'])) { $_SESSION['session_stats'] = [ 'correct' => 0, 'wrong' => 0 ]; } foreach ($data['words'] as $i => $word) { if ((int)$word['id'] === $wordId) { // normalize $expected = strtolower(trim($data['words'][$i]['answer'])); $given = strtolower(trim($userAnswer)); $correct = ($expected === $given); /** * ❗ SESSIE STATS (DIT IS WAT JE WIL) */ if ($correct) { $_SESSION['session_stats']['correct']++; } else { $_SESSION['session_stats']['wrong']++; } /** * SRS UPDATE (blijft op woordniveau) */ updateWordStats($data['words'][$i], $correct); $updatedWord = $data['words'][$i]; break; } } if ($updatedWord === null) { echo json_encode([ 'error' => 'word_not_found', 'wordId' => $wordId ]); exit; } $ok = JsonDB::write($file, $data); if (!$ok) { echo json_encode(['error' => 'write_failed']); exit; } echo json_encode([ 'correct' => $correct, /** * UI FEEDBACK (SESSIE) */ 'session' => $_SESSION['session_stats'], /** * DEBUG (optioneel) */ 'debug' => [ 'wordId' => $wordId ] ]);