diff --git a/enrol/meta/classes/observer.php b/enrol/meta/classes/observer.php index 625d23296fb..864deea000c 100644 --- a/enrol/meta/classes/observer.php +++ b/enrol/meta/classes/observer.php @@ -99,4 +99,33 @@ class enrol_meta_observer extends enrol_meta_handler { return true; } + + /** + * Triggered via role_assigned event. + * + * @param \core\event\role_assigned $event + * @return bool true on success. + */ + public static function role_assigned(\core\event\role_assigned $event) { + if (!enrol_is_enabled('meta')) { + 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 08c962584e6..e16def63516 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_assigned' => array ( - 'handlerfile' => '/enrol/meta/locallib.php', - 'handlerfunction' => array('enrol_meta_handler', 'role_assigned'), - 'schedule' => 'instant', - 'internal' => 1, - ), - 'role_unassigned' => array ( 'handlerfile' => '/enrol/meta/locallib.php', 'handlerfunction' => array('enrol_meta_handler', 'role_unassigned'), @@ -64,4 +57,8 @@ $observers = array( 'eventname' => '\core\event\user_enrolment_updated', 'callback' => 'enrol_meta_observer::user_enrolment_updated', ), + array( + 'eventname' => '\core\event\role_assigned', + 'callback' => 'enrol_meta_observer::role_assigned', + ), ); diff --git a/enrol/meta/locallib.php b/enrol/meta/locallib.php index c20bfafe54e..ccf929f2cb6 100644 --- a/enrol/meta/locallib.php +++ b/enrol/meta/locallib.php @@ -234,35 +234,6 @@ class enrol_meta_handler { } } - /** - * Triggered via role assigned event. - * @static - * @param stdClass $ra - * @return bool success - */ - public static function role_assigned($ra) { - if (!enrol_is_enabled('meta')) { - 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 role unassigned event. * @static