mirror of
https://github.com/moodle/moodle.git
synced 2025-08-08 02:16:41 +02:00
MDL-45758 tool_monitor: Add observers to handle user and module deletion
Original issue - MDL-47376
This commit is contained in:
parent
5833307eab
commit
e24e0d24b9
3 changed files with 53 additions and 0 deletions
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.
|
||||||
*
|
*
|
||||||
|
|
|
@ -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',
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue