From 24f7204e9fe2319a35685115f8c583c27cca38c3 Mon Sep 17 00:00:00 2001 From: Thomas de Roo <2+thomas@noreply.localhost> Date: Mon, 15 Jun 2026 12:24:07 +0200 Subject: [PATCH] Update api/answer.php --- api/answer.php | 94 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 71 insertions(+), 23 deletions(-) diff --git a/api/answer.php b/api/answer.php index 8742485..3a9e7b2 100644 --- a/api/answer.php +++ b/api/answer.php @@ -1,49 +1,97 @@ 'invalid_json' + ]); + exit; } -$input = json_decode(file_get_contents('php://input'), true); - -$lang = $input['lang']; -$list = $input['list']; -$wordId = (int)$input['wordId']; -$userAnswer = trim($input['answer']); +$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; +$updated = false; -foreach ($data['words'] as $word) { +foreach ($data['words'] as &$word) { - if ($word['id'] === $wordId) { + if ((int)$word['id'] === $wordId) { - $correct = - normalize($word['answer']) === normalize($userAnswer); + // init stats veilig + if (!isset($word['correct'])) $word['correct'] = 0; + if (!isset($word['wrong'])) $word['wrong'] = 0; + + // normalize compare + $expected = strtolower(trim($word['answer'])); + $given = strtolower(trim($userAnswer)); + + $correct = ($expected === $given); + + // update stats + if ($correct) { + $word['correct']++; + } else { + $word['wrong']++; + } + + // SRS update (nextReview + interval) updateWordStats($word, $correct); + $updated = true; break; } } -JsonDB::write($file, $data); +// als woord niet gevonden is +if (!$updated) { + echo json_encode([ + 'error' => 'word_not_found', + 'wordId' => $wordId + ]); + exit; +} + +// write back +$ok = JsonDB::write($file, $data); + +if (!$ok) { + echo json_encode([ + 'error' => 'write_failed' + ]); + exit; +} echo json_encode([ - 'correct' => $correct + 'correct' => $correct, + 'stats' => [ + 'wordId' => $wordId, + 'correct' => $correct ? 1 : 0 + ] ]); \ No newline at end of file