diff --git a/classes/observer.php b/classes/observer.php index 1c2e5503..d3de1562 100644 --- a/classes/observer.php +++ b/classes/observer.php @@ -131,6 +131,20 @@ public static function assignsubmission_submitted( $plugin->event_handler($eventdata); } + /** + * Handle the assignment submission_removed event. + * @param \mod_assign\event\submission_removed $event + */ + public static function assignsubmission_removed( + \mod_assign\event\submission_removed $event) { + $eventdata = $event->get_data(); + $eventdata['eventtype'] = 'submission_removed'; + $eventdata['other']['modulename'] = 'assign'; + + $plugin = new plagiarism_plugin_turnitin(); + $plugin->event_handler($eventdata); + } + /** * Observer function to handle the quiz_submitted event in mod_quiz. * @param \mod_quiz\event\attempt_submitted $event diff --git a/db/events.php b/db/events.php index e029d21d..345fa009 100644 --- a/db/events.php +++ b/db/events.php @@ -42,6 +42,10 @@ 'eventname' => '\mod_assign\event\assessable_submitted', 'callback' => 'plagiarism_turnitin_observer::assignsubmission_submitted' ), + array( + 'eventname' => '\mod_assign\event\submission_removed', + 'callback' => 'plagiarism_turnitin_observer::assignsubmission_removed' + ), array( 'eventname' => '\mod_coursework\event\assessable_uploaded', 'callback' => 'plagiarism_turnitin_observer::coursework_submitted' diff --git a/lib.php b/lib.php index e2c61b9e..e09deb10 100755 --- a/lib.php +++ b/lib.php @@ -2167,6 +2167,15 @@ public function queue_submission_to_turnitin($cm, $author, $submitter, $identifi $attempt = 0; $tiisubmissionid = null; + // Remove error submission queue if any. + $DB->delete_records('plagiarism_turnitin_files', [ + 'cm' => $cm->id, + 'userid' => $author, + 'itemid' => $itemid, + 'statuscode' => 'error', + ] + ); + // Check if file has been submitted before. $plagiarismfiles = plagiarism_turnitin_retrieve_successful_submissions($author, $cm->id, $identifier); if (count($plagiarismfiles) > 0) { @@ -2435,6 +2444,17 @@ public function event_handler($eventdata) { } } + // Remove submission from Turnitin queue if it is removed from Moodle. + if ($eventdata['other']['modulename'] == 'assign' && $eventdata['eventtype'] == "submission_removed") { + $params = [ + 'cm' => $eventdata['contextinstanceid'], + 'userid' => $eventdata['relateduserid'], + 'itemid' => $eventdata['objectid'], + 'statuscode' => 'queued', + ]; + $DB->delete_records('plagiarism_turnitin_files', $params); + } + // Queue every question submitted in a quiz attempt. if ($eventdata['eventtype'] == 'quiz_submitted') { $attempt = quiz_attempt::create($eventdata['objectid']); diff --git a/version.php b/version.php index cc4172ec..44dd8214 100644 --- a/version.php +++ b/version.php @@ -19,7 +19,7 @@ * @copyright 2012 iParadigms LLC */ -$plugin->version = 2022092101; +$plugin->version = 2022092102; $plugin->release = "3.5+"; $plugin->requires = 2018051700;