Pārlūkot izejas kodu

Merge branch '1.11.x' of github.com:chamilo/chamilo-lms into 1.11.x

jmontoyaa 8 gadi atpakaļ
vecāks
revīzija
41f82cbcda

+ 8 - 1
main/exercise/exercise.class.php

@@ -8456,7 +8456,14 @@ class Exercise
         foreach ($attempts as $attempt) {
             foreach ($attempt['question_list'] as $answer) {
                 $objAnswer = new Answer($answer['question_id']);
-                $isCorrect = $objAnswer->isCorrectByAutoId($answer['answer']);
+
+                switch ($objAnswer->getQuestionType()) {
+                    case FILL_IN_BLANKS:
+                        $isCorrect = FillBlanks::isCorrect($answer['answer']);
+                        break;
+                    default:
+                        $isCorrect = $objAnswer->isCorrectByAutoId($answer['answer']);
+                }
 
                 if ($isCorrect) {
                     $corrects[$answer['question_id']][] = $answer;

+ 22 - 0
main/exercise/fill_blanks.class.php

@@ -1169,4 +1169,26 @@ class FillBlanks extends Question
     {
         return self::getHtmlAnswer($answer, $correct, false, $resultsDisabled);
     }
+
+    /**
+     * Check if a answer is correct by its text
+     * @param string $answerText
+     * @return bool
+     */
+    public static function isCorrect($answerText)
+    {
+        $answerInfo = FillBlanks::getAnswerInfo($answerText, true);
+        $correctAnswerList = $answerInfo['tabwords'];
+        $studentAnswer = $answerInfo['studentanswer'];
+
+        $isCorrect = true;
+
+        foreach ($correctAnswerList as $i => $correctAnswer) {
+            $isGoodStudentAnswer = FillBlanks::isGoodStudentAnswer($studentAnswer[$i], $correctAnswer);
+
+            $isCorrect = $isCorrect && $isGoodStudentAnswer;
+        }
+
+        return $isCorrect;
+    }
 }