diff --git a/enrol/database/lib.php b/enrol/database/lib.php index f7606b6743ec8..34b95a81e27c3 100644 --- a/enrol/database/lib.php +++ b/enrol/database/lib.php @@ -170,7 +170,7 @@ public function sync_user_enrolments($user) { if ($e = $DB->get_record('user_enrolments', array('userid'=>$user->id, 'enrolid'=>$instance->id))) { // reenable enrolment when previously disable enrolment refreshed if ($e->status == ENROL_USER_SUSPENDED) { - $DB->set_field('user_enrolments', 'status', ENROL_USER_ACTIVE, array('enrolid'=>$instance->id, 'userid'=>$user->id)); + $this->update_user_enrol($instance, $user->id, ENROL_USER_ACTIVE); } } else { $roleid = reset($roles); @@ -231,7 +231,7 @@ public function sync_user_enrolments($user) { } else if ($unenrolaction == ENROL_EXT_REMOVED_SUSPEND or $unenrolaction == ENROL_EXT_REMOVED_SUSPENDNOROLES) { // disable if ($instance->ustatus != ENROL_USER_SUSPENDED) { - $DB->set_field('user_enrolments', 'status', ENROL_USER_SUSPENDED, array('enrolid'=>$instance->id, 'userid'=>$user->id)); + $this->update_user_enrol($instance, $user->id, ENROL_USER_SUSPENDED); } if ($unenrolaction == ENROL_EXT_REMOVED_SUSPENDNOROLES) { role_unassign_all(array('contextid'=>$context->id, 'userid'=>$user->id, 'component'=>'enrol_database', 'itemid'=>$instance->id)); @@ -488,7 +488,7 @@ public function sync_enrolments($verbose = false) { // reenable enrolment when previously disable enrolment refreshed if ($current_status[$userid] == ENROL_USER_SUSPENDED) { - $DB->set_field('user_enrolments', 'status', ENROL_USER_ACTIVE, array('enrolid'=>$instance->id, 'userid'=>$userid)); + $this->update_user_enrol($instance, $userid, ENROL_USER_ACTIVE); if ($verbose) { mtrace(" unsuspending: $userid ==> $course->shortname"); } @@ -520,7 +520,7 @@ public function sync_enrolments($verbose = false) { continue; } if ($status != ENROL_USER_SUSPENDED) { - $DB->set_field('user_enrolments', 'status', ENROL_USER_SUSPENDED, array('enrolid'=>$instance->id, 'userid'=>$userid)); + $this->update_user_enrol($instance, $userid, ENROL_USER_SUSPENDED); if ($verbose) { mtrace(" suspending: $userid ==> $course->shortname"); } diff --git a/enrol/manual/locallib.php b/enrol/manual/locallib.php index ab5a3b2b4ead1..b2bfb82d72e97 100644 --- a/enrol/manual/locallib.php +++ b/enrol/manual/locallib.php @@ -258,7 +258,7 @@ public function process(course_enrolment_manager $manager, array $users, stdClas foreach ($user->enrolments as $enrolment) { $enrolment->courseid = $enrolment->enrolmentinstance->courseid; $enrolment->enrol = 'manual'; - events_trigger('user_unenrol_modified', $enrolment); + events_trigger('user_enrol_modified', $enrolment); } } return true; diff --git a/enrol/upgrade.txt b/enrol/upgrade.txt index 4fb4c4996b022..55eecf1f80bde 100644 --- a/enrol/upgrade.txt +++ b/enrol/upgrade.txt @@ -6,3 +6,4 @@ information provided here is intended especially for developers. required changes in code: * load_temp_role() is deprecated, use load_temp_course_role() instead, temp role not loaded * remove_temp_role() is deprecated, use remove_temp_course_roles() instead +* 'user_unenrol_modified' event was renamed to 'user_enrol_modified' diff --git a/lib/db/events.php b/lib/db/events.php index f4126a9fb0769..e6c52d53558bb 100644 --- a/lib/db/events.php +++ b/lib/db/events.php @@ -73,7 +73,7 @@ course_deleted - object course table record + context property user_enrolled - object record from user_enrolments table + courseid,enrol -user_unenrol_modified - object record from user_enrolments table + courseid,enrol +user_enrol_modified - object record from user_enrolments table + courseid,enrol user_unenrolled - object record from user_enrolments table + courseid,enrol,lastenrol ==== cohort related events === diff --git a/lib/enrollib.php b/lib/enrollib.php index fe3dce2a2e387..c3ce81cd14e4f 100644 --- a/lib/enrollib.php +++ b/lib/enrollib.php @@ -1103,6 +1103,7 @@ public function enrol_user(stdClass $instance, $userid, $roleid = NULL, $timesta $context = get_context_instance(CONTEXT_COURSE, $instance->courseid, MUST_EXIST); $inserted = false; + $updated = false; if ($ue = $DB->get_record('user_enrolments', array('enrolid'=>$instance->id, 'userid'=>$userid))) { //only update if timestart or timeend or status are different. if ($ue->timestart != $timestart or $ue->timeend != $timeend or (!is_null($status) and $ue->status != $status)) { @@ -1114,6 +1115,8 @@ public function enrol_user(stdClass $instance, $userid, $roleid = NULL, $timesta $ue->modifierid = $USER->id; $ue->timemodified = time(); $DB->update_record('user_enrolments', $ue); + + $updated = true; } } else { $ue = new stdClass(); @@ -1143,6 +1146,10 @@ public function enrol_user(stdClass $instance, $userid, $roleid = NULL, $timesta $ue->courseid = $courseid; $ue->enrol = $name; events_trigger('user_enrolled', $ue); + } else if ($updated) { + $ue->courseid = $courseid; + $ue->enrol = $name; + events_trigger('user_enrol_modified', $ue); } // reset primitive require_login() caching @@ -1160,8 +1167,8 @@ public function enrol_user(stdClass $instance, $userid, $roleid = NULL, $timesta /** * Store user_enrolments changes and trigger event. * - * @param object $ue - * @param int $user id + * @param stdClass $instance + * @param int $userid * @param int $status * @param int $timestart * @param int $timeend @@ -1206,7 +1213,7 @@ public function update_user_enrol(stdClass $instance, $userid, $status = NULL, $ // trigger event $ue->courseid = $instance->courseid; $ue->enrol = $instance->name; - events_trigger('user_unenrol_modified', $ue); + events_trigger('user_enrol_modified', $ue); } /**