diff --git a/enrol/meta/classes/observer.php b/enrol/meta/classes/observer.php index 864deea000c..9c408f33906 100644 --- a/enrol/meta/classes/observer.php +++ b/enrol/meta/classes/observer.php @@ -128,4 +128,34 @@ class enrol_meta_observer extends enrol_meta_handler { return true; } + + /** + * Triggered via role_unassigned event. + * + * @param \core\event\role_unassigned $event + * @return bool true on success + */ + public static function role_unassigned(\core\event\role_unassigned $event) { + if (!enrol_is_enabled('meta')) { + // All roles are removed via cron automatically. + return true; + } + + // Prevent circular dependencies - we can not sync meta roles recursively. + if ($event->other['component'] === 'enrol_meta') { + return true; + } + + // Only course level roles are interesting. + if (!$parentcontext = context::instance_by_id($event->contextid, IGNORE_MISSING)) { + return true; + } + if ($parentcontext->contextlevel != CONTEXT_COURSE) { + return true; + } + + self::sync_course_instances($parentcontext->instanceid, $event->relateduserid); + + return true; + } } diff --git a/enrol/meta/db/events.php b/enrol/meta/db/events.php index e16def63516..20f3d0a9028 100644 --- a/enrol/meta/db/events.php +++ b/enrol/meta/db/events.php @@ -27,13 +27,6 @@ defined('MOODLE_INTERNAL') || die(); /* List of handlers */ $handlers = array ( - 'role_unassigned' => array ( - 'handlerfile' => '/enrol/meta/locallib.php', - 'handlerfunction' => array('enrol_meta_handler', 'role_unassigned'), - 'schedule' => 'instant', - 'internal' => 1, - ), - 'course_deleted' => array ( 'handlerfile' => '/enrol/meta/locallib.php', 'handlerfunction' => array('enrol_meta_handler', 'course_deleted'), @@ -61,4 +54,8 @@ $observers = array( 'eventname' => '\core\event\role_assigned', 'callback' => 'enrol_meta_observer::role_assigned', ), + array( + 'eventname' => '\core\event\role_unassigned', + 'callback' => 'enrol_meta_observer::role_unassigned', + ), ); diff --git a/enrol/meta/locallib.php b/enrol/meta/locallib.php index ccf929f2cb6..153fb51851a 100644 --- a/enrol/meta/locallib.php +++ b/enrol/meta/locallib.php @@ -234,36 +234,6 @@ class enrol_meta_handler { } } - /** - * Triggered via role unassigned event. - * @static - * @param stdClass $ra - * @return bool success - */ - public static function role_unassigned($ra) { - if (!enrol_is_enabled('meta')) { - // all roles are removed via cron automatically - return true; - } - - // prevent circular dependencies - we can not sync meta roles recursively - if ($ra->component === 'enrol_meta') { - return true; - } - - // only course level roles are interesting - if (!$parentcontext = context::instance_by_id($ra->contextid, IGNORE_MISSING)) { - return true; - } - if ($parentcontext->contextlevel != CONTEXT_COURSE) { - return true; - } - - self::sync_course_instances($parentcontext->instanceid, $ra->userid); - - return true; - } - /** * Triggered via course_deleted event. * @static