From 78fa55b23efecf202bd6036007698c7545348b51 Mon Sep 17 00:00:00 2001 From: Ruslan Kabalin Date: Mon, 20 May 2013 14:08:34 +0100 Subject: [PATCH] MDL-39760: mod_assign: Add few more callback methods. Adds lock, unlock and release_to_draft. All of them accept single parameter - an assign_submission record. --- mod/assign/locallib.php | 25 +++++++++++++++++++++++++ mod/assign/submissionplugin.php | 27 +++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index b60580282d0..a54a8ea76e3 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -3286,6 +3286,13 @@ class assign { $submission->status = ASSIGN_SUBMISSION_STATUS_DRAFT; $this->update_submission($submission, false); + // Give each submission plugin a chance to process the reverting to draft. + $plugins = $this->get_submission_plugins(); + foreach ($plugins as $plugin) { + if ($plugin->is_enabled() && $plugin->is_visible()) { + $plugin->revert_to_draft($submission); + } + } // update the modified time on the grade (grader modified) $grade = $this->get_user_grade($userid, true); $this->update_grade($grade); @@ -3313,6 +3320,15 @@ class assign { $userid = required_param('userid', PARAM_INT); } + // Give each submission plugin a chance to process the locking. + $plugins = $this->get_submission_plugins(); + $submission = $this->get_user_submission($userid, false); + foreach ($plugins as $plugin) { + if ($plugin->is_enabled() && $plugin->is_visible()) { + $plugin->lock($submission); + } + } + $grade = $this->get_user_grade($userid, true); $grade->locked = 1; $grade->grader = $USER->id; @@ -3340,6 +3356,15 @@ class assign { $userid = required_param('userid', PARAM_INT); } + // Give each submission plugin a chance to process the locking. + $plugins = $this->get_submission_plugins(); + $submission = $this->get_user_submission($userid, false); + foreach ($plugins as $plugin) { + if ($plugin->is_enabled() && $plugin->is_visible()) { + $plugin->unlock($submission); + } + } + $grade = $this->get_user_grade($userid, true); $grade->locked = 0; $grade->grader = $USER->id; diff --git a/mod/assign/submissionplugin.php b/mod/assign/submissionplugin.php index da7d7cff9c4..3257be0138e 100644 --- a/mod/assign/submissionplugin.php +++ b/mod/assign/submissionplugin.php @@ -76,4 +76,31 @@ abstract class assign_submission_plugin extends assign_plugin { public function submit_for_grading(stdClass $submission) { } + /** + * Carry out any extra processing required when the work is locked. + * + * @param stdClass $submission - assign_submission data + * @return void + */ + public function lock(stdClass $submission) { + } + + /** + * Carry out any extra processing required when the work is unlocked. + * + * @param stdClass $submission - assign_submission data + * @return void + */ + public function unlock(stdClass $submission) { + } + + /** + * Carry out any extra processing required when the work reverted to draft. + * + * @param stdClass $submission - assign_submission data + * @return void + */ + public function revert_to_draft(stdClass $submission) { + } + } -- 2.43.0