MDL-58768 mod_assign: Add $user param to assign::can_grade
authorShamim Rezaie <shamim@moodle.com>
Wed, 4 Apr 2018 15:15:47 +0000 (01:15 +1000)
committerShamim Rezaie <shamim@moodle.com>
Fri, 27 Jul 2018 21:51:32 +0000 (07:51 +1000)
mod/assign/locallib.php
mod/assign/tests/locallib_test.php
mod/assign/upgrade.txt

index 55f734c..67b3f57 100644 (file)
@@ -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;
         }
 
index 80ec0cd..d4b17e9 100644 (file)
@@ -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);
 
index d32481c..dbcd9fd 100644 (file)
@@ -4,6 +4,7 @@ This files describes API changes in the assign code.
 * The mod_assign_base_testcase unit test base class has been deprecated.
   It encouraged poor unit test design and led to significant performance issues with unit tests. See MDL-55609 for
   further information.
+* 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,