Index: lib/moodlelib.php =================================================================== --- lib/moodlelib.php (revision 959) +++ lib/moodlelib.php (working copy) @@ -3473,6 +3473,7 @@ set_user_preference('auth_forcepasswordchange', 1, $user->id); } update_internal_user_password($user, $password); + events_trigger('user_created', $user); return $user; } @@ -3489,9 +3490,10 @@ $username = trim(moodle_strtolower($username)); /// just in case check text case - $oldinfo = $DB->get_record('user', array('username'=>$username), 'username, auth'); + $oldinfo = $DB->get_record('user', array('username'=>$username)); $userauth = get_auth_plugin($oldinfo->auth); + $updated = false; if ($newinfo = $userauth->get_userinfo($username)) { $newinfo = truncate_userinfo($newinfo); foreach ($newinfo as $key => $value){ @@ -3511,14 +3513,21 @@ // in a value for the selected field _if LDAP is giving // nothing_ for this field. Thus it makes sense to let this value // stand in until LDAP is giving a value for this field. - if (!(empty($value) && $lockval === 'unlockedifempty')) { + if (empty($value) && $lockval === 'unlockedifempty') { + continue; + } + if ($oldinfo->{$key} !== $value) { $DB->set_field('user', $key, $value, array('username'=>$username)); + $updated = true; } } } } - - return get_complete_user_data('username', $username); + $newuser = get_complete_user_data('username', $username); + if ($updated) { + events_trigger('user_updated', $newuser); + } + return $newuser; } /**