Merge branch 'wip-mdl-49022-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE
This commit is contained in:
+7
-3
@@ -534,6 +534,7 @@ class auth_plugin_ldap extends auth_plugin_base {
|
||||
*
|
||||
* @param object $user new user object
|
||||
* @param boolean $notify print notice with link and terminate
|
||||
* @return boolean success
|
||||
*/
|
||||
function user_signup($user, $notify=true) {
|
||||
global $CFG, $DB, $PAGE, $OUTPUT;
|
||||
@@ -889,7 +890,7 @@ class auth_plugin_ldap extends auth_plugin_base {
|
||||
|
||||
foreach ($users as $user) {
|
||||
echo "\t"; print_string('auth_dbupdatinguser', 'auth_db', array('name'=>$user->username, 'id'=>$user->id));
|
||||
if (!$this->update_user_record($user->username, $updatekeys)) {
|
||||
if (!$this->update_user_record($user->username, $updatekeys, true)) {
|
||||
echo ' - '.get_string('skipped');
|
||||
}
|
||||
echo "\n";
|
||||
@@ -987,8 +988,11 @@ class auth_plugin_ldap extends auth_plugin_base {
|
||||
*
|
||||
* @param string $username username
|
||||
* @param boolean $updatekeys true to update the local record with the external LDAP values.
|
||||
* @param bool $triggerevent set false if user_updated event should not be triggered.
|
||||
* This will not affect user_password_updated event triggering.
|
||||
* @return stdClass|bool updated user record or false if there is no new info to update.
|
||||
*/
|
||||
function update_user_record($username, $updatekeys = false) {
|
||||
protected function update_user_record($username, $updatekeys = false, $triggerevent = false) {
|
||||
global $CFG, $DB;
|
||||
|
||||
// Just in case check text case
|
||||
@@ -1030,7 +1034,7 @@ class auth_plugin_ldap extends auth_plugin_base {
|
||||
}
|
||||
}
|
||||
}
|
||||
user_update_user($newuser, false, false);
|
||||
user_update_user($newuser, false, $triggerevent);
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
|
||||
@@ -136,9 +136,25 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
|
||||
$auth = get_auth_plugin('ldap');
|
||||
|
||||
ob_start();
|
||||
$sink = $this->redirectEvents();
|
||||
$auth->sync_users(true);
|
||||
$events = $sink->get_events();
|
||||
$sink->close();
|
||||
ob_end_clean();
|
||||
|
||||
// Check events, 5 users created with 2 users having roles.
|
||||
$this->assertCount(7, $events);
|
||||
foreach ($events as $index => $event) {
|
||||
$usercreatedindex = array(0, 2, 4, 5, 6);
|
||||
$roleassignedindex = array (1, 3);
|
||||
if (in_array($index, $usercreatedindex)) {
|
||||
$this->assertInstanceOf('\core\event\user_created', $event);
|
||||
}
|
||||
if (in_array($index, $roleassignedindex)) {
|
||||
$this->assertInstanceOf('\core\event\role_assigned', $event);
|
||||
}
|
||||
}
|
||||
|
||||
$this->assertEquals(5, $DB->count_records('user', array('auth'=>'ldap')));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments'));
|
||||
$this->assertEquals(2, $DB->count_records('role_assignments', array('roleid'=>$creatorrole->id)));
|
||||
@@ -150,9 +166,15 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
|
||||
$this->delete_ldap_user($connection, $topdn, 1);
|
||||
|
||||
ob_start();
|
||||
$sink = $this->redirectEvents();
|
||||
$auth->sync_users(true);
|
||||
$events = $sink->get_events();
|
||||
$sink->close();
|
||||
ob_end_clean();
|
||||
|
||||
// Check events, no new event.
|
||||
$this->assertCount(0, $events);
|
||||
|
||||
$this->assertEquals(5, $DB->count_records('user', array('auth'=>'ldap')));
|
||||
$this->assertEquals(0, $DB->count_records('user', array('suspended'=>1)));
|
||||
$this->assertEquals(0, $DB->count_records('user', array('deleted'=>1)));
|
||||
@@ -166,9 +188,17 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
|
||||
$auth = get_auth_plugin('ldap');
|
||||
|
||||
ob_start();
|
||||
$sink = $this->redirectEvents();
|
||||
$auth->sync_users(true);
|
||||
$events = $sink->get_events();
|
||||
$sink->close();
|
||||
ob_end_clean();
|
||||
|
||||
// Check events, 1 user got updated.
|
||||
$this->assertCount(1, $events);
|
||||
$event = reset($events);
|
||||
$this->assertInstanceOf('\core\event\user_updated', $event);
|
||||
|
||||
$this->assertEquals(5, $DB->count_records('user', array('auth'=>'ldap')));
|
||||
$this->assertEquals(0, $DB->count_records('user', array('auth'=>'nologin', 'username'=>'username1')));
|
||||
$this->assertEquals(1, $DB->count_records('user', array('auth'=>'ldap', 'suspended'=>'1', 'username'=>'username1')));
|
||||
@@ -179,9 +209,17 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
|
||||
$this->create_ldap_user($connection, $topdn, 1);
|
||||
|
||||
ob_start();
|
||||
$sink = $this->redirectEvents();
|
||||
$auth->sync_users(true);
|
||||
$events = $sink->get_events();
|
||||
$sink->close();
|
||||
ob_end_clean();
|
||||
|
||||
// Check events, 1 user got updated.
|
||||
$this->assertCount(1, $events);
|
||||
$event = reset($events);
|
||||
$this->assertInstanceOf('\core\event\user_updated', $event);
|
||||
|
||||
$this->assertEquals(5, $DB->count_records('user', array('auth'=>'ldap')));
|
||||
$this->assertEquals(0, $DB->count_records('user', array('suspended'=>1)));
|
||||
$this->assertEquals(0, $DB->count_records('user', array('deleted'=>1)));
|
||||
@@ -191,9 +229,17 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
|
||||
$DB->set_field('user', 'auth', 'nologin', array('username'=>'username1'));
|
||||
|
||||
ob_start();
|
||||
$sink = $this->redirectEvents();
|
||||
$auth->sync_users(true);
|
||||
$events = $sink->get_events();
|
||||
$sink->close();
|
||||
ob_end_clean();
|
||||
|
||||
// Check events, 1 user got updated.
|
||||
$this->assertCount(1, $events);
|
||||
$event = reset($events);
|
||||
$this->assertInstanceOf('\core\event\user_updated', $event);
|
||||
|
||||
$this->assertEquals(5, $DB->count_records('user', array('auth'=>'ldap')));
|
||||
$this->assertEquals(0, $DB->count_records('user', array('suspended'=>1)));
|
||||
$this->assertEquals(0, $DB->count_records('user', array('deleted'=>1)));
|
||||
@@ -208,9 +254,19 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
|
||||
$this->delete_ldap_user($connection, $topdn, 1);
|
||||
|
||||
ob_start();
|
||||
$sink = $this->redirectEvents();
|
||||
$auth->sync_users(true);
|
||||
$events = $sink->get_events();
|
||||
$sink->close();
|
||||
ob_end_clean();
|
||||
|
||||
// Check events, 2 events role_unassigned and user_deleted.
|
||||
$this->assertCount(2, $events);
|
||||
$event = array_pop($events);
|
||||
$this->assertInstanceOf('\core\event\user_deleted', $event);
|
||||
$event = array_pop($events);
|
||||
$this->assertInstanceOf('\core\event\role_unassigned', $event);
|
||||
|
||||
$this->assertEquals(5, $DB->count_records('user', array('auth'=>'ldap')));
|
||||
$this->assertEquals(0, $DB->count_records('user', array('username'=>'username1')));
|
||||
$this->assertEquals(0, $DB->count_records('user', array('suspended'=>1)));
|
||||
@@ -221,9 +277,19 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
|
||||
$this->create_ldap_user($connection, $topdn, 1);
|
||||
|
||||
ob_start();
|
||||
$sink = $this->redirectEvents();
|
||||
$auth->sync_users(true);
|
||||
$events = $sink->get_events();
|
||||
$sink->close();
|
||||
ob_end_clean();
|
||||
|
||||
// Check events, 2 events role_assigned and user_created.
|
||||
$this->assertCount(2, $events);
|
||||
$event = array_pop($events);
|
||||
$this->assertInstanceOf('\core\event\role_assigned', $event);
|
||||
$event = array_pop($events);
|
||||
$this->assertInstanceOf('\core\event\user_created', $event);
|
||||
|
||||
$this->assertEquals(6, $DB->count_records('user', array('auth'=>'ldap')));
|
||||
$this->assertEquals(1, $DB->count_records('user', array('username'=>'username1')));
|
||||
$this->assertEquals(0, $DB->count_records('user', array('suspended'=>1)));
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
This files describes API changes in the auth_ldap code.
|
||||
=== 2.8.7 ===
|
||||
* auth_plugin_ldap::update_user_record() accepts an additional (optional) param
|
||||
to trigger update event.
|
||||
Reference in New Issue
Block a user