diff --git a/main/exercise/exercise.class.php b/main/exercise/exercise.class.php index 2f8252cd62..ad6ae125cb 100755 --- a/main/exercise/exercise.class.php +++ b/main/exercise/exercise.class.php @@ -4656,7 +4656,7 @@ class Exercise case MATCHING: case MATCHING_DRAGGABLE: if (RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT_NO_FEEDBACK == $this->results_disabled) { - if (empty($s_user_answer)) { + if (false === $showTotalScoreAndUserChoicesInLastAttempt && empty($s_user_answer)) { break; } } @@ -4714,7 +4714,7 @@ class Exercise $s_answer_label = ''; } if (RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT_NO_FEEDBACK == $this->results_disabled) { - if (empty($s_user_answer)) { + if (false === $showTotalScoreAndUserChoicesInLastAttempt && empty($s_user_answer)) { break; } } diff --git a/main/exercise/hotspot_answers.as.php b/main/exercise/hotspot_answers.as.php index f5f47a847f..29e9f364fc 100755 --- a/main/exercise/hotspot_answers.as.php +++ b/main/exercise/hotspot_answers.as.php @@ -91,10 +91,10 @@ $data['image_width'] = $pictureWidth; $data['image_height'] = $pictureHeight; $data['courseCode'] = $_course['path']; $data['hotspots'] = []; - +$resultDisable = $objExercise->selectResultsDisabled(); $showTotalScoreAndUserChoicesInLastAttempt = true; if (in_array( - $objExercise->selectResultsDisabled(), [ + $resultDisable, [ RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT, RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT_NO_FEEDBACK, RESULT_DISABLE_DONT_SHOW_SCORE_ONLY_IF_USER_FINISHES_ATTEMPTS_SHOW_ALWAYS_FEEDBACK, @@ -128,15 +128,14 @@ if (in_array( $hideExpectedAnswer = false; if ($objExercise->getFeedbackType() == 0 && - $objExercise->selectResultsDisabled() == RESULT_DISABLE_SHOW_SCORE_ONLY + $resultDisable == RESULT_DISABLE_SHOW_SCORE_ONLY ) { $hideExpectedAnswer = true; } if (in_array( - $objExercise->selectResultsDisabled(), [ + $resultDisable, [ RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT, - RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT_NO_FEEDBACK, RESULT_DISABLE_DONT_SHOW_SCORE_ONLY_IF_USER_FINISHES_ATTEMPTS_SHOW_ALWAYS_FEEDBACK, ] ) @@ -144,6 +143,15 @@ if (in_array( $hideExpectedAnswer = $showTotalScoreAndUserChoicesInLastAttempt ? false : true; } +if (in_array( + $resultDisable, [ + RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT_NO_FEEDBACK, + ] +) +) { + $hideExpectedAnswer = false; +} + $hotSpotWithAnswer = []; $data['answers'] = []; $rs = $em @@ -160,7 +168,10 @@ $rs = $em /** @var TrackEHotspot $row */ foreach ($rs as $row) { $data['answers'][] = $row->getHotspotCoordinate(); - $hotSpotWithAnswer[] = $row->getHotspotAnswerId(); + + if ($row->getHotspotCorrect()) { + $hotSpotWithAnswer[] = $row->getHotspotAnswerId(); + } } if (!$hideExpectedAnswer) { @@ -183,12 +194,13 @@ if (!$hideExpectedAnswer) { } $result = $qb->getQuery()->getResult(); - /** @var CQuizAnswer $hotSpotAnswer */ foreach ($result as $hotSpotAnswer) { - if (RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT_NO_FEEDBACK == $objExercise->results_disabled) { - if (!in_array($hotSpotAnswer->getIid(), $hotSpotWithAnswer)) { - continue; + if (RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT_NO_FEEDBACK == $resultDisable) { + if (false === $showTotalScoreAndUserChoicesInLastAttempt) { + if (!in_array($hotSpotAnswer->getIid(), $hotSpotWithAnswer)) { + continue; + } } } diff --git a/main/inc/lib/exercise.lib.php b/main/inc/lib/exercise.lib.php index 906f5bd53a..0260bd2e01 100644 --- a/main/inc/lib/exercise.lib.php +++ b/main/inc/lib/exercise.lib.php @@ -4649,6 +4649,16 @@ EOT; $show_only_score = false; $showTotalScoreAndUserChoicesInLastAttempt = true; } + + if ($objExercise->results_disabled == RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT_NO_FEEDBACK) { + $showTotalScore = true; + $show_results = true; + $show_only_score = false; + $showTotalScoreAndUserChoicesInLastAttempt = false; + if ($numberAttempts >= $objExercise->attempts) { + $showTotalScoreAndUserChoicesInLastAttempt = true; + } + } } if ($objExercise->results_disabled == diff --git a/main/inc/lib/exercise_show_functions.lib.php b/main/inc/lib/exercise_show_functions.lib.php index ca53610cae..18c3907658 100755 --- a/main/inc/lib/exercise_show_functions.lib.php +++ b/main/inc/lib/exercise_show_functions.lib.php @@ -227,7 +227,7 @@ class ExerciseShowFunctions if ($showTotalScoreAndUserChoices) { $hide_expected_answer = false; } - if (empty($studentChoice)) { + if (false === $showTotalScoreAndUserChoices && empty($studentChoice)) { return ''; } break; @@ -370,7 +370,7 @@ class ExerciseShowFunctions } break; case RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT_NO_FEEDBACK: - if (empty($studentChoiceInt)) { + if (false === $showTotalScoreAndUserChoices && empty($studentChoiceInt)) { return ''; } break; @@ -507,7 +507,7 @@ class ExerciseShowFunctions } break; case RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT_NO_FEEDBACK: - if (empty($studentChoice)) { + if (false === $showTotalScoreAndUserChoices && empty($studentChoice)) { return ''; } break; @@ -735,7 +735,7 @@ class ExerciseShowFunctions } break; case RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT_NO_FEEDBACK: - if (empty($studentChoice)) { + if (false === $showTotalScoreAndUserChoices && empty($studentChoice)) { return ''; } break;