MDL-39760: mod_assign: Add few more callback methods.
authorRuslan Kabalin <r.kabalin@lancaster.ac.uk>
Mon, 20 May 2013 13:08:34 +0000 (14:08 +0100)
committerRuslan Kabalin <r.kabalin@lancaster.ac.uk>
Wed, 19 Jun 2013 14:38:34 +0000 (15:38 +0100)
Adds lock, unlock and release_to_draft. All of them accept single parameter -
an assign_submission record.

mod/assign/locallib.php
mod/assign/submissionplugin.php

index b605802..a54a8ea 100644 (file)
@@ -3286,6 +3286,13 @@ class assign {
         $submission->status = ASSIGN_SUBMISSION_STATUS_DRAFT;
         $this->update_submission($submission, false);
 
         $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);
         // 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);
         }
 
             $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;
         $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);
         }
 
             $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;
         $grade = $this->get_user_grade($userid, true);
         $grade->locked = 0;
         $grade->grader = $USER->id;
index da7d7cf..3257be0 100644 (file)
@@ -76,4 +76,31 @@ abstract class assign_submission_plugin extends assign_plugin {
     public function submit_for_grading(stdClass $submission) {
     }
 
     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) {
+    }
+
 }
 }