From d2761afa21c91f40c3a8392ba6196c8ac35383b1 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Wed, 4 Jul 2018 13:48:29 +0800 Subject: [PATCH] MDL-62782 assign: viewgrades allows files Grade viewer role should be able to see feedback files for an assignment submission. --- mod/assign/feedback/editpdf/lib.php | 14 +++++++------- mod/assign/feedback/file/lib.php | 18 +++++++++--------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/mod/assign/feedback/editpdf/lib.php b/mod/assign/feedback/editpdf/lib.php index 85eeba70d4f..143acff7e83 100644 --- a/mod/assign/feedback/editpdf/lib.php +++ b/mod/assign/feedback/editpdf/lib.php @@ -45,23 +45,23 @@ function assignfeedback_editpdf_pluginfile($course, array $options=array()) { global $USER, $DB, $CFG; + require_once($CFG->dirroot . '/mod/assign/locallib.php'); + if ($context->contextlevel == CONTEXT_MODULE) { require_login($course, false, $cm); $itemid = (int)array_shift($args); - if (!$assign = $DB->get_record('assign', array('id'=>$cm->instance))) { - return false; - } + $assign = new assign($context, $cm, $course); - $record = $DB->get_record('assign_grades', array('id'=>$itemid), 'userid,assignment', MUST_EXIST); + $record = $DB->get_record('assign_grades', array('id' => $itemid), 'userid,assignment', MUST_EXIST); $userid = $record->userid; - if ($assign->id != $record->assignment) { + if ($assign->get_instance()->id != $record->assignment) { return false; } - // Check is users feedback or has grading permission. - if ($USER->id != $userid and !has_capability('mod/assign:grade', $context)) { + // Rely on mod_assign checking permissions. + if (!$assign->can_view_submission($userid)) { return false; } diff --git a/mod/assign/feedback/file/lib.php b/mod/assign/feedback/file/lib.php index 29427c485a2..1a33d43546a 100644 --- a/mod/assign/feedback/file/lib.php +++ b/mod/assign/feedback/file/lib.php @@ -42,27 +42,27 @@ function assignfeedback_file_pluginfile($course, $args, $forcedownload, array $options=array()) { - global $USER, $DB; + global $USER, $DB, $CFG, $PAGE; if ($context->contextlevel != CONTEXT_MODULE) { return false; } + require_once($CFG->dirroot . '/mod/assign/locallib.php'); + require_login($course, false, $cm); $itemid = (int)array_shift($args); - $record = $DB->get_record('assign_grades', array('id'=>$itemid), 'userid,assignment', MUST_EXIST); + $record = $DB->get_record('assign_grades', array('id' => $itemid), 'userid,assignment', MUST_EXIST); $userid = $record->userid; - if (!$assign = $DB->get_record('assign', array('id'=>$cm->instance))) { + $assign = new assign($context, $cm, $course); + + if ($assign->get_instance()->id != $record->assignment) { return false; } - if ($assign->id != $record->assignment) { - return false; - } - - // Check is users feedback or has grading permission. - if ($USER->id != $userid and !has_capability('mod/assign:grade', $context)) { + // Rely on mod_assign checking permissions. + if (!$assign->can_view_submission($userid)) { return false; }