diff --git a/mod/quiz/index.php b/mod/quiz/index.php index b679a885fcb..eac25bbb786 100644 --- a/mod/quiz/index.php +++ b/mod/quiz/index.php @@ -168,7 +168,7 @@ foreach ($quizzes as $quiz) { $grade = ''; $feedback = ''; if ($quiz->grade && array_key_exists($quiz->id, grades)) { - if ($alloptions->marks) { + if ($alloptions->marks >= question_display_options::MARK_AND_MAX) { $a = new stdClass(); $a->grade = quiz_format_grade($quiz, $grades[$quiz->id]); $a->maxgrade = quiz_format_grade($quiz, $quiz->grade); diff --git a/mod/quiz/lib.php b/mod/quiz/lib.php index 6ee65e8980b..aa419bb2fd2 100644 --- a/mod/quiz/lib.php +++ b/mod/quiz/lib.php @@ -606,10 +606,12 @@ function quiz_grade_item_update($quiz, $grades = NULL) { mod_quiz_display_options::LATER_WHILE_OPEN); $closedreviewoptions = mod_quiz_display_options::make_from_quiz($quiz, mod_quiz_display_options::AFTER_CLOSE); - if (!$openreviewoptions->marks && !$closedreviewoptions->marks) { + if ($openreviewoptions->marks < question_display_options::MARK_AND_MAX && + $closedreviewoptions->marks < question_display_options::MARK_AND_MAX) { $params['hidden'] = 1; - } else if (!$openreviewoptions->marks && $closedreviewoptions->marks) { + } else if ($openreviewoptions->marks < question_display_options::MARK_AND_MAX && + $closedreviewoptions->marks >= question_display_options::MARK_AND_MAX) { if ($quiz->timeclose) { $params['hidden'] = $quiz->timeclose; } else { @@ -810,7 +812,7 @@ function quiz_get_recent_mod_activity(&$activities, &$index, $timestart, $tmpactivity->content->attemptid = $attempt->id; $tmpactivity->content->attempt = $attempt->attempt; - if (quiz_has_grades($quiz) && $options->marks) { + if (quiz_has_grades($quiz) && $options->marks >= question_display_options::MARK_AND_MAX) { $tmpactivity->content->sumgrades = quiz_format_grade($quiz, $attempt->sumgrades); $tmpactivity->content->maxgrade = quiz_format_grade($quiz, $quiz->sumgrades); } else { diff --git a/mod/quiz/locallib.php b/mod/quiz/locallib.php index a6da4d9c1a9..d7385e866bc 100644 --- a/mod/quiz/locallib.php +++ b/mod/quiz/locallib.php @@ -1043,13 +1043,16 @@ function quiz_get_review_options($quiz, $attempt, $context) { * for all attempts. */ function quiz_get_combined_reviewoptions($quiz, $attempts) { - $fields = array('marks', 'feedback', 'generalfeedback', 'rightanswer', 'overallfeedback'); + $fields = array('feedback', 'generalfeedback', 'rightanswer', 'overallfeedback'); $someoptions = new stdClass(); $alloptions = new stdClass(); foreach ($fields as $field) { $someoptions->$field = false; $alloptions->$field = true; } + $someoptions->marks = question_display_options::HIDDEN; + $alloptions->marks = question_display_options::MARK_AND_MAX; + foreach ($attempts as $attempt) { $attemptoptions = mod_quiz_display_options::make_from_quiz($quiz, quiz_attempt_state($quiz, $attempt)); @@ -1057,6 +1060,8 @@ function quiz_get_combined_reviewoptions($quiz, $attempts) { $someoptions->$field = $someoptions->$field || $attemptoptions->$field; $alloptions->$field = $alloptions->$field && $attemptoptions->$field; } + $someoptions->marks = max($someoptions->marks, $attemptoptions->marks); + $alloptions->marks = min($alloptions->marks, $attemptoptions->marks); } return array($someoptions, $alloptions); } diff --git a/mod/quiz/report/attemptsreport.php b/mod/quiz/report/attemptsreport.php index 55e0b5c7e82..802584060d8 100644 --- a/mod/quiz/report/attemptsreport.php +++ b/mod/quiz/report/attemptsreport.php @@ -63,7 +63,8 @@ abstract class quiz_attempt_report extends quiz_default_report { } $reviewoptions = mod_quiz_display_options::make_from_quiz($quiz, $when); - $this->showgrades = quiz_has_grades($quiz) && ($reviewoptions->marks || + $this->showgrades = quiz_has_grades($quiz) && + ($reviewoptions->marks >= question_display_options::MARK_AND_MAX || has_capability('moodle/grade:viewhidden', $this->context)); return $this->showgrades; diff --git a/mod/quiz/review.php b/mod/quiz/review.php index bf04b274d26..fbce4af15d9 100644 --- a/mod/quiz/review.php +++ b/mod/quiz/review.php @@ -176,7 +176,7 @@ if ($page == 0) { // Show marks (if the user is allowed to see marks at the moment). $grade = quiz_rescale_grade($attempt->sumgrades, $quiz, false); - if ($options->marks && quiz_has_grades($quiz)) { + if ($options->marks >= question_display_options::MARK_AND_MAX && quiz_has_grades($quiz)) { if (!$attempt->timefinish) { $rows[] = '