From 6b8b06911bd2045d6f702e19580aec30568e72b4 Mon Sep 17 00:00:00 2001 From: Shamim Rezaie Date: Thu, 5 Apr 2018 01:15:47 +1000 Subject: [PATCH] MDL-58768 mod_assign: Add $user param to assign::can_grade --- mod/assign/locallib.php | 5 +++-- mod/assign/tests/locallib_test.php | 5 +++++ mod/assign/upgrade.txt | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 0a13324abae..f7be63a42c1 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -3316,11 +3316,12 @@ class assign { /** * Does this user have grade permission for this assignment? * + * @param int|stdClass $user The object or id of the user who will do the editing (default to current user). * @return bool */ - public function can_grade() { + public function can_grade($user = null) { // Permissions check. - if (!has_capability('mod/assign:grade', $this->context)) { + if (!has_capability('mod/assign:grade', $this->context, $user)) { return false; } diff --git a/mod/assign/tests/locallib_test.php b/mod/assign/tests/locallib_test.php index 80ec0cd2a04..d4b17e9a7b8 100644 --- a/mod/assign/tests/locallib_test.php +++ b/mod/assign/tests/locallib_test.php @@ -1720,6 +1720,11 @@ class mod_assign_locallib_testcase extends advanced_testcase { $this->setUser($teacher); $this->assertEquals(true, $assign->can_grade()); + // Test the viewgrades capability for other users. + $this->setUser(); + $this->assertTrue($assign->can_grade($teacher->id)); + $this->assertFalse($assign->can_grade($student->id)); + // Test the viewgrades capability - without mod/assign:grade. $this->setUser($student); diff --git a/mod/assign/upgrade.txt b/mod/assign/upgrade.txt index d32481c41b9..7ab3a8e2f2f 100644 --- a/mod/assign/upgrade.txt +++ b/mod/assign/upgrade.txt @@ -5,6 +5,9 @@ This files describes API changes in the assign code. It encouraged poor unit test design and led to significant performance issues with unit tests. See MDL-55609 for further information. +=== 3.5.2 === +* The function can_grade() now has optional $user parameter. + === 3.5 === * Functions assign:get_assign_grading_summary_renderable, assign:can_view_submission, assign:count_submissions_with_status, assign:count_submissions_need_grading and mod_assign_external::get_submission_status now admit an additional group parameter.