diff --git a/lib/enrollib.php b/lib/enrollib.php index c3ce81cd14e..5ddf736c06c 100644 --- a/lib/enrollib.php +++ b/lib/enrollib.php @@ -1133,14 +1133,6 @@ abstract class enrol_plugin { $inserted = true; } - if ($roleid) { - if ($this->roles_protected()) { - role_assign($roleid, $userid, $context->id, 'enrol_'.$name, $instance->id); - } else { - role_assign($roleid, $userid, $context->id); - } - } - if ($inserted) { // add extra info and trigger event $ue->courseid = $courseid; @@ -1152,6 +1144,15 @@ abstract class enrol_plugin { events_trigger('user_enrol_modified', $ue); } + if ($roleid) { + // this must be done after the enrolment event so that the role_assigned event is trigerred aftwerwards + if ($this->roles_protected()) { + role_assign($roleid, $userid, $context->id, 'enrol_'.$name, $instance->id); + } else { + role_assign($roleid, $userid, $context->id); + } + } + // reset primitive require_login() caching if ($userid == $USER->id) { if (isset($USER->enrol['enrolled'][$courseid])) {