X-Git-Url: http://git.moodle.org/gw?p=moodle.git;a=blobdiff_plain;f=mod%2Fworkshop%2Flocallib.php;h=ac243f238bb18b26e136ae4059468f4bad9db074;hp=383ce6104ed3fe2965641fd3e2cfdc9672c40ca6;hb=46f5e9a0ef16260150942148285c8e972df29d57;hpb=86928d2a7c27fda9b4781f4104efd3fd07d37328;ds=inline diff --git a/mod/workshop/locallib.php b/mod/workshop/locallib.php index 383ce6104ed..ac243f238bb 100644 --- a/mod/workshop/locallib.php +++ b/mod/workshop/locallib.php @@ -2998,6 +2998,33 @@ class workshop { } } + /** + * Helper method for validating if the current user can edit the given assessment. + * + * @param stdClass $assessment assessment object + * @param stdClass $submission submission object + * @return void + * @throws moodle_exception + * @since Moodle 3.4 + */ + public function check_edit_assessment($assessment, $submission) { + global $USER; + + $this->check_view_assessment($assessment, $submission); + // Further checks. + $isreviewer = ($USER->id == $assessment->reviewerid); + + $assessmenteditable = $isreviewer && $this->assessing_allowed($USER->id); + if (!$assessmenteditable) { + throw new moodle_exception('nopermissions', 'error', '', 'edit assessments'); + } + + list($assessed, $notice) = $this->check_examples_assessed_before_assessment($assessment->reviewerid); + if (!$assessed) { + throw new moodle_exception($notice, 'mod_workshop'); + } + } + //////////////////////////////////////////////////////////////////////////////// // Internal methods (implementation details) // ////////////////////////////////////////////////////////////////////////////////