MDL-66722 forum: Add grade capability
authorAndrew Nicols <andrew@nicols.co.uk>
Tue, 24 Sep 2019 04:30:15 +0000 (12:30 +0800)
committerMathew May <mathewm@hotmail.co.nz>
Mon, 28 Oct 2019 05:55:50 +0000 (13:55 +0800)
Part of MDL-66074

mod/forum/classes/local/managers/capability.php
mod/forum/db/access.php
mod/forum/lang/en/forum.php
mod/forum/version.php

index 42bcda2..c55f84e 100644 (file)
@@ -679,4 +679,19 @@ class capability {
     public function can_export_forum(stdClass $user) : bool {
         return has_capability('mod/forum:exportforum', $this->get_context(), $user);
     }
+
+    /**
+     * Check whether the supplied grader can grade the gradee.
+     *
+     * @param stdClass $grader The user grading
+     * @param stdClass $gradee The user being graded
+     * @return bool
+     */
+    public function can_grade(stdClass $grader, stdClass $gradee = null): bool {
+        if (!has_capability('mod/forum:grade', $this->get_context(), $grader)) {
+            return false;
+        }
+
+        return true;
+    }
 }
index 0a9e722..9facbeb 100644 (file)
@@ -422,6 +422,16 @@ $capabilities = array(
         'archetypes' => array(
             'user' => CAP_ALLOW
         )
-    )
+    ),
+
+    'mod/forum:grade' => [
+        'captype' => 'write',
+        'contextlevel' => CONTEXT_MODULE,
+        'archetypes' => [
+            'teacher' => CAP_ALLOW,
+            'editingteacher' => CAP_ALLOW,
+            'manager' => CAP_ALLOW,
+        ],
+    ],
 );
 
index 4efc17b..7274f16 100644 (file)
@@ -283,6 +283,7 @@ $string['forum:allowforcesubscribe'] = 'Allow force subscribe';
 $string['forum:canoverridecutoff'] = 'Post to forums after their cut-off date';
 $string['forum:canoverridediscussionlock'] = 'Reply to locked discussions';
 $string['forum:cantogglefavourite'] = 'Star discussions';
+$string['forum:grade'] = 'Grade other users';
 $string['forumauthorhidden'] = 'Author (hidden)';
 $string['forumblockingalmosttoomanyposts'] = 'You are approaching the posting threshold. You have posted {$a->numposts} times in the last {$a->blockperiod} and the limit is {$a->blockafter} posts.';
 $string['forumbodyhidden'] = 'This post cannot be viewed by you, probably because you have not posted in the discussion, the maximum editing time hasn\'t passed yet, the discussion has not started or the discussion has expired.';
index 89aebb9..fd2008c 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2019071903;       // The current module version (Date: YYYYMMDDXX)
+$plugin->version   = 2019100101;       // The current module version (Date: YYYYMMDDXX)
 $plugin->requires  = 2019051100;       // Requires this Moodle version
 $plugin->component = 'mod_forum';      // Full name of the plugin (used for diagnostics)