From 0c2701fd6de405fdbf83dfc8a233674b910707f7 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Fri, 28 Oct 2011 14:57:42 +0200 Subject: [PATCH] MDL-29964 fix order of events triggered by enrolment --- lib/enrollib.php | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) 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])) {