MDL-45758 tool_monitor: Add observers to handle user and module deletion

Original issue - MDL-47376
This commit is contained in:
Ankit Agarwal 2014-10-02 12:15:51 +05:30
parent 5833307eab
commit e24e0d24b9
3 changed files with 53 additions and 0 deletions

View file

@ -187,4 +187,24 @@ class eventobservers {
$this->count = 0; $this->count = 0;
return $events; return $events;
} }
/**
* Observer that monitors user deleted event and delete user subscriptions.
*
* @param \core\event\user_deleted $event the event object.
*/
public static function user_deleted(\core\event\user_deleted $event) {
$userid = $event->objectid;
subscription_manager::delete_user_subscriptions($userid);
}
/**
* Observer that monitors course module deleted event and delete user subscriptions.
*
* @param \core\event\course_module_deleted $event the event object.
*/
public static function course_module_deleted(\core\event\course_module_deleted $event) {
$cmid = $event->contextinstanceid;
subscription_manager::delete_cm_subscriptions($cmid);
}
} }

View file

@ -84,6 +84,30 @@ class subscription_manager {
return $DB->delete_records('tool_monitor_subscriptions', array('id' => $subscription->id)); return $DB->delete_records('tool_monitor_subscriptions', array('id' => $subscription->id));
} }
/**
* Delete all subscriptions for a user.
*
* @param int $userid user id.
*
* @return mixed
*/
public static function delete_user_subscriptions($userid) {
global $DB;
return $DB->delete_records('tool_monitor_subscriptions', array('userid' => $userid));
}
/**
* Delete all subscriptions for a course module.
*
* @param int $cmid cm id.
*
* @return mixed
*/
public static function delete_cm_subscriptions($cmid) {
global $DB;
return $DB->delete_records('tool_monitor_subscriptions', array('cmid' => $cmid));
}
/** /**
* Delete all subscribers for a given rule. * Delete all subscribers for a given rule.
* *

View file

@ -26,10 +26,19 @@
$observers = array( $observers = array(
array( array(
'eventname' => '\core\event\course_deleted', 'eventname' => '\core\event\course_deleted',
'priority' => 1,
'callback' => '\tool_monitor\eventobservers::course_deleted', 'callback' => '\tool_monitor\eventobservers::course_deleted',
), ),
array( array(
'eventname' => '*', 'eventname' => '*',
'callback' => '\tool_monitor\eventobservers::process_event', 'callback' => '\tool_monitor\eventobservers::process_event',
),
array(
'eventname' => '\core\event\user_deleted',
'callback' => '\tool_monitor\eventobservers::user_deleted',
),
array(
'eventname' => '\core\event\course_module_deleted',
'callback' => '\tool_monitor\eventobservers::course_module_deleted',
) )
); );