From 9c94ca5843aeb96acc8ab824c2ef3e3255124b80 Mon Sep 17 00:00:00 2001 From: John Okely Date: Tue, 6 May 2014 10:11:58 +0800 Subject: [PATCH] MDL-45296 events: Fix objecttable and ids Various events had them incorrectly set or missing: - submission_locked - submission_unlocked - subscription_created - subscription_deleted --- .../classes/event/submission_locked.php | 10 ++++---- .../classes/event/submission_unlocked.php | 10 ++++---- mod/assign/locallib.php | 4 ++-- mod/assign/upgrade.txt | 1 + .../classes/event/subscription_created.php | 1 + .../classes/event/subscription_deleted.php | 1 + mod/forum/lib.php | 24 ++++++++++++------- 7 files changed, 30 insertions(+), 21 deletions(-) diff --git a/mod/assign/classes/event/submission_locked.php b/mod/assign/classes/event/submission_locked.php index 372eb51e66e..f8220d4e085 100644 --- a/mod/assign/classes/event/submission_locked.php +++ b/mod/assign/classes/event/submission_locked.php @@ -47,13 +47,13 @@ class submission_locked extends base { * @since Moodle 2.7 * * @param \assign $assign - * @param \stdClass $user + * @param \stdClass $submission * @return submission_locked */ - public static function create_from_user(\assign $assign, \stdClass $user) { + public static function create_from_submission(\assign $assign, \stdClass $submission, \stdClass $user) { $data = array( 'context' => $assign->get_context(), - 'objectid' => $assign->get_instance()->id, + 'objectid' => $submission->id, 'relateduserid' => $user->id, ); self::$preventcreatecall = false; @@ -92,7 +92,7 @@ class submission_locked extends base { protected function init() { $this->data['crud'] = 'u'; $this->data['edulevel'] = self::LEVEL_TEACHING; - $this->data['objecttable'] = 'assign'; + $this->data['objecttable'] = 'assign_submission'; } /** @@ -114,7 +114,7 @@ class submission_locked extends base { */ protected function validate_data() { if (self::$preventcreatecall) { - throw new \coding_exception('cannot call submission_locked::create() directly, use submission_locked::create_from_user() instead.'); + throw new \coding_exception('cannot call submission_locked::create() directly, use submission_locked::create_from_submission() instead.'); } parent::validate_data(); diff --git a/mod/assign/classes/event/submission_unlocked.php b/mod/assign/classes/event/submission_unlocked.php index fcfc28b4eee..b5f48313097 100644 --- a/mod/assign/classes/event/submission_unlocked.php +++ b/mod/assign/classes/event/submission_unlocked.php @@ -47,13 +47,13 @@ class submission_unlocked extends base { * @since Moodle 2.7 * * @param \assign $assign - * @param \stdClass $user + * @param \stdClass $submission * @return submission_unlocked */ - public static function create_from_user(\assign $assign, \stdClass $user) { + public static function create_from_submission(\assign $assign, \stdClass $submission, \stdClass $user) { $data = array( 'context' => $assign->get_context(), - 'objectid' => $assign->get_instance()->id, + 'objectid' => $submission->id, 'relateduserid' => $user->id, ); self::$preventcreatecall = false; @@ -92,7 +92,7 @@ class submission_unlocked extends base { protected function init() { $this->data['crud'] = 'u'; $this->data['edulevel'] = self::LEVEL_TEACHING; - $this->data['objecttable'] = 'assign'; + $this->data['objecttable'] = 'assign_submission'; } /** @@ -114,7 +114,7 @@ class submission_unlocked extends base { */ protected function validate_data() { if (self::$preventcreatecall) { - throw new \coding_exception('cannot call submission_unlocked::create() directly, use submission_unlocked::create_from_user() instead.'); + throw new \coding_exception('cannot call submission_unlocked::create() directly, use submission_unlocked::create_from_submission() instead.'); } parent::validate_data(); diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index d4175346af2..f456ce67a5c 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -6103,7 +6103,7 @@ class assign { } $user = $DB->get_record('user', array('id' => $userid), '*', MUST_EXIST); - \mod_assign\event\submission_locked::create_from_user($this, $user)->trigger(); + \mod_assign\event\submission_locked::create_from_submission($this, $submission, $user)->trigger(); return true; } @@ -6228,7 +6228,7 @@ class assign { } $user = $DB->get_record('user', array('id' => $userid), '*', MUST_EXIST); - \mod_assign\event\submission_unlocked::create_from_user($this, $user)->trigger(); + \mod_assign\event\submission_unlocked::create_from_submission($this, $submission, $user)->trigger(); return true; } diff --git a/mod/assign/upgrade.txt b/mod/assign/upgrade.txt index 3856c723ed2..cb5161809ba 100644 --- a/mod/assign/upgrade.txt +++ b/mod/assign/upgrade.txt @@ -9,6 +9,7 @@ This files describes API changes in the assign code. * A new web service function mod_assign_save_grades has been added which allows multiple grades to be processed. * The event submission_updated() [mod/assign/classes/event/submission_updated.php] has been altered to now be an abstract class for submission events in the submission plug-ins. +* The subscription_created and subscription_deleted event's objecttables have been changed from 'assign' to 'assign_submission' === 2.6.1 === diff --git a/mod/forum/classes/event/subscription_created.php b/mod/forum/classes/event/subscription_created.php index 4e837f193c3..9a7aec98a9e 100644 --- a/mod/forum/classes/event/subscription_created.php +++ b/mod/forum/classes/event/subscription_created.php @@ -49,6 +49,7 @@ class subscription_created extends \core\event\base { protected function init() { $this->data['crud'] = 'c'; $this->data['edulevel'] = self::LEVEL_OTHER; + $this->data['objecttable'] = 'forum_subscriptions'; } /** diff --git a/mod/forum/classes/event/subscription_deleted.php b/mod/forum/classes/event/subscription_deleted.php index 349c1c55697..a2f3e271696 100644 --- a/mod/forum/classes/event/subscription_deleted.php +++ b/mod/forum/classes/event/subscription_deleted.php @@ -49,6 +49,7 @@ class subscription_deleted extends \core\event\base { protected function init() { $this->data['crud'] = 'd'; $this->data['edulevel'] = self::LEVEL_OTHER; + $this->data['objecttable'] = 'forum_subscriptions'; } /** diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 09a4d8a14f0..15ae0a602e8 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -4839,6 +4839,7 @@ function forum_subscribe($userid, $forumid) { $cm = get_coursemodule_from_instance('forum', $forumid); $params = array( 'context' => context_module::instance($cm->id), + 'objectid' => $result, 'relateduserid' => $userid, 'other' => array('forumid' => $forumid), @@ -4860,17 +4861,22 @@ function forum_unsubscribe($userid, $forumid) { global $DB; $DB->delete_records('forum_digests', array('userid' => $userid, 'forum' => $forumid)); - $DB->delete_records('forum_subscriptions', array('userid' => $userid, 'forum' => $forumid)); - $cm = get_coursemodule_from_instance('forum', $forumid); - $params = array( - 'context' => context_module::instance($cm->id), - 'relateduserid' => $userid, - 'other' => array('forumid' => $forumid), + if ($forumsubscription = $DB->get_record('forum_subscriptions', array('userid' => $userid, 'forum' => $forumid))) { + $DB->delete_records('forum_subscriptions', array('id' => $forumsubscription->id)); - ); - $event = \mod_forum\event\subscription_deleted::create($params); - $event->trigger(); + $cm = get_coursemodule_from_instance('forum', $forumid); + $params = array( + 'context' => context_module::instance($cm->id), + 'objectid' => $forumsubscription->id, + 'relateduserid' => $userid, + 'other' => array('forumid' => $forumid), + + ); + $event = \mod_forum\event\subscription_deleted::create($params); + $event->add_record_snapshot('forum_subscriptions', $forumsubscription); + $event->trigger(); + } return true; }