diff --git a/main/exercise/exercise.class.php b/main/exercise/exercise.class.php index a329287033..7dd5d3843d 100755 --- a/main/exercise/exercise.class.php +++ b/main/exercise/exercise.class.php @@ -4122,47 +4122,55 @@ class Exercise $studentAnswer = trim($listStudentAnswerTemp[$i]); $studentAnswerToShow = $studentAnswer; + if (empty($studentAnswer)) { + continue; + } + if ($debug) { error_log("Student answer: $i"); error_log($studentAnswer); } + if (!$from_database) { + $studentAnswer = FillBlanks::clearStudentAnswer($studentAnswer); + if ($debug) { + error_log("Student answer cleaned:"); + error_log($studentAnswer); + } + } + $found = false; for ($j = 0; $j < count($listTeacherAnswerTemp); $j++) { $correctAnswer = $listTeacherAnswerTemp[$j]; - $type = FillBlanks::getFillTheBlankAnswerType($correctAnswer); - if ($type == FillBlanks::FILL_THE_BLANK_MENU) { - $listMenu = FillBlanks::getFillTheBlankMenuAnswers($correctAnswer, false); - if (!empty($studentAnswer)) { - foreach ($listMenu as $key => $item) { - if ($key == $correctAnswer) { - $studentAnswerToShow = $item; - break; - } - } - } - } if (!$found) { if (FillBlanks::isStudentAnswerGood( $studentAnswer, $correctAnswer, $from_database - ) - ) { + )) { $questionScore += $answerWeighting[$i]; $totalScore += $answerWeighting[$i]; $listTeacherAnswerTemp[$j] = ''; $found = true; } } + + $type = FillBlanks::getFillTheBlankAnswerType($correctAnswer); + if ($type == FillBlanks::FILL_THE_BLANK_MENU) { + $listMenu = FillBlanks::getFillTheBlankMenuAnswers($correctAnswer, false); + if (!empty($studentAnswer)) { + foreach ($listMenu as $key => $item) { + if ($key == $correctAnswer) { + $studentAnswerToShow = $item; + break; + } + } + } + } } $listCorrectAnswers['student_answer'][$i] = $studentAnswerToShow; - if (!$found) { - $listCorrectAnswers['student_score'][$i] = 0; - } else { - $listCorrectAnswers['student_score'][$i] = 1; - } + $listCorrectAnswers['student_score'][$i] = $found ? 1 : 0; } } $answer = FillBlanks::getAnswerInStudentAttempt($listCorrectAnswers);