From 930570b410557563abb686eba6e8dae16eed1eff Mon Sep 17 00:00:00 2001 From: Mike Churchward Date: Tue, 15 Nov 2016 12:35:38 -0500 Subject: [PATCH] MDL-48055 q_u_outline, q_u_complete: added checks for grade visibility. --- mod/quiz/lib.php | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/mod/quiz/lib.php b/mod/quiz/lib.php index 06a1a2f1dc1..16b22d131e5 100644 --- a/mod/quiz/lib.php +++ b/mod/quiz/lib.php @@ -458,7 +458,13 @@ function quiz_user_outline($course, $user, $mod, $quiz) { } $result = new stdClass(); - $result->info = get_string('grade') . ': ' . $grade->str_long_grade; + // If the user can't see hidden grades, don't return that information. + $gitem = grade_item::fetch(array('id' => $grades->items[0]->id)); + if (!$gitem->hidden || has_capability('moodle/grade:viewhidden', context_course::instance($course->id))) { + $result->info = get_string('grade') . ': ' . $grade->str_long_grade; + } else { + $result->info = get_string('grade') . ': ' . get_string('hidden', 'grades'); + } // Datesubmitted == time created. dategraded == time modified or time overridden // if grade was last modified by the user themselves use date graded. Otherwise use @@ -491,9 +497,18 @@ function quiz_user_complete($course, $user, $mod, $quiz) { $grades = grade_get_grades($course->id, 'mod', 'quiz', $quiz->id, $user->id); if (!empty($grades->items[0]->grades)) { $grade = reset($grades->items[0]->grades); - echo $OUTPUT->container(get_string('grade').': '.$grade->str_long_grade); - if ($grade->str_feedback) { - echo $OUTPUT->container(get_string('feedback').': '.$grade->str_feedback); + // If the user can't see hidden grades, don't return that information. + $gitem = grade_item::fetch(array('id' => $grades->items[0]->id)); + if (!$gitem->hidden || has_capability('moodle/grade:viewhidden', context_course::instance($course->id))) { + echo $OUTPUT->container(get_string('grade').': '.$grade->str_long_grade); + if ($grade->str_feedback) { + echo $OUTPUT->container(get_string('feedback').': '.$grade->str_feedback); + } + } else { + echo $OUTPUT->container(get_string('grade') . ': ' . get_string('hidden', 'grades')); + if ($grade->str_feedback) { + echo $OUTPUT->container(get_string('feedback').': '.get_string('hidden', 'grades')); + } } } @@ -504,8 +519,19 @@ function quiz_user_complete($course, $user, $mod, $quiz) { if ($attempt->state != quiz_attempt::FINISHED) { echo quiz_attempt_state_name($attempt->state); } else { - echo quiz_format_grade($quiz, $attempt->sumgrades) . '/' . - quiz_format_grade($quiz, $quiz->sumgrades); + if (!isset($gitem)) { + if (!empty($grades->items[0]->grades)) { + $gitem = grade_item::fetch(array('id' => $grades->items[0]->id)); + } else { + $gitem = new stdClass(); + $gitem->hidden = true; + } + } + if (!$gitem->hidden || has_capability('moodle/grade:viewhidden', context_course::instance($course->id))) { + echo quiz_format_grade($quiz, $attempt->sumgrades) . '/' . quiz_format_grade($quiz, $quiz->sumgrades); + } else { + echo get_string('hidden', 'grades'); + } } echo ' - '.userdate($attempt->timemodified).'
'; }