Просмотр исходного кода

Fix multiple answer when showing correct answers on last attempt - refs BT#11024

Angel Fernando Quiroz Campos 8 лет назад
Родитель
Сommit
b23e423bd4
3 измененных файлов с 23 добавлено и 19 удалено
  1. 13 11
      main/exercise/exercise.class.php
  2. 9 7
      main/exercise/exercise_submit.php
  3. 1 1
      main/inc/lib/events.lib.php

+ 13 - 11
main/exercise/exercise.class.php

@@ -8481,19 +8481,21 @@ class Exercise
         $corrects = [];
         $corrects = [];
 
 
         foreach ($attempts as $attempt) {
         foreach ($attempts as $attempt) {
-            foreach ($attempt['question_list'] as $answer) {
-                $objAnswer = new Answer($answer['question_id']);
+            foreach ($attempt['question_list'] as $answers) {
+                foreach ($answers as $answer) {
+                    $objAnswer = new Answer($answer['question_id']);
 
 
-                switch ($objAnswer->getQuestionType()) {
-                    case FILL_IN_BLANKS:
-                        $isCorrect = FillBlanks::isCorrect($answer['answer']);
-                        break;
-                    default:
-                        $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;
+                    if ($isCorrect) {
+                        $corrects[$answer['question_id']][] = $answer;
+                    }
                 }
                 }
             }
             }
         }
         }

+ 9 - 7
main/exercise/exercise_submit.php

@@ -221,13 +221,15 @@ if ($objExercise->selectAttempts() > 0) {
                     );
                     );
 
 
                     if (!empty($last_attempt_info['question_list'])) {
                     if (!empty($last_attempt_info['question_list'])) {
-                        foreach($last_attempt_info['question_list'] as $question_data) {
-                            $question_id = $question_data['question_id'];
-                            $marks       = $question_data['marks'];
-
-                            $question_info = Question::read($question_id);
-                            $attempt_html .= Display::div($question_info->question, array('class'=>'question_title'));
-                            $attempt_html .= Display::div(get_lang('Score').' '.$marks, array('id'=>'question_question_titlescore'));
+                        foreach($last_attempt_info['question_list'] as $questions) {
+                            foreach ($questions as $question_data) {
+                                $question_id = $question_data['question_id'];
+                                $marks       = $question_data['marks'];
+
+                                $question_info = Question::read($question_id);
+                                $attempt_html .= Display::div($question_info->question, array('class'=>'question_title'));
+                                $attempt_html .= Display::div(get_lang('Score').' '.$marks, array('id'=>'question_question_titlescore'));
+                            }
                         }
                         }
                     }
                     }
 					$score =  ExerciseLib::show_score($last_attempt_info['exe_result'], $last_attempt_info['exe_weighting']);
 					$score =  ExerciseLib::show_score($last_attempt_info['exe_result'], $last_attempt_info['exe_weighting']);

+ 1 - 1
main/inc/lib/events.lib.php

@@ -1360,7 +1360,7 @@ class Event
                     WHERE exe_id = {$row['exe_id']}";
                     WHERE exe_id = {$row['exe_id']}";
             $res_question = Database::query($sql);
             $res_question = Database::query($sql);
             while ($row_q = Database::fetch_array($res_question, 'ASSOC')) {
             while ($row_q = Database::fetch_array($res_question, 'ASSOC')) {
-                $list[$row['exe_id']]['question_list'][$row_q['question_id']] = $row_q;
+                $list[$row['exe_id']]['question_list'][$row_q['question_id']][] = $row_q;
             }
             }
         }
         }
         return $list;
         return $list;