Merge branch 'w38_MDL-32572_m23_authdbduplicates' of git://github.com/skodak/moodle into MOODLE_23_STABLE

This commit is contained in:
Eloy Lafuente (stronk7)
2012-09-18 19:51:38 +02:00
+21 -7
View File
@@ -65,7 +65,7 @@ class auth_plugin_db extends auth_plugin_base {
$authdb->Close();
// user exists externally
// check username/password internally
if ($user = $DB->get_record('user', array('username'=>$username, 'mnethostid'=>$CFG->mnet_localhost_id))) {
if ($user = $DB->get_record('user', array('username'=>$username, 'mnethostid'=>$CFG->mnet_localhost_id, 'auth'=>$this->authtype))) {
return validate_internal_user_password($user, $password);
}
} else {
@@ -191,8 +191,16 @@ class auth_plugin_db extends auth_plugin_base {
* @return bool True on success
*/
function user_update_password($user, $newpassword) {
global $DB;
if ($this->is_internal()) {
return update_internal_user_password($user, $newpassword);
$puser = $DB->get_record('user', array('id'=>$user->id), '*', MUST_EXIST);
if (update_internal_user_password($puser, $newpassword)) {
$user->password = $puser->password;
return true;
} else {
return false;
}
} else {
// we should have never been called!
return false;
@@ -346,7 +354,7 @@ class auth_plugin_db extends auth_plugin_base {
if ($verbose) {
mtrace(get_string('auth_dbuserstoadd','auth_db',count($add_users)));
}
$transaction = $DB->start_delegated_transaction();
// Do not use transactions around this foreach, we want to skip problematic users, not revert everything.
foreach($add_users as $user) {
$username = $user;
$user = $this->get_userinfo_asobj($user);
@@ -372,9 +380,16 @@ class auth_plugin_db extends auth_plugin_base {
} else {
$user->timecreated = time();
$user->timemodified = $user->timecreated;
$id = $DB->insert_record ('user', $user); // it is truly a new user
if ($verbose) {
mtrace("\t".get_string('auth_dbinsertuser', 'auth_db', array('name'=>$user->username, 'id'=>$id)));
try {
$id = $DB->insert_record('user', $user); // it is truly a new user
if ($verbose) {
mtrace("\t".get_string('auth_dbinsertuser', 'auth_db', array('name'=>$user->username, 'id'=>$id)));
}
} catch (moodle_exception $e) {
if ($verbose) {
mtrace("\t".get_string('auth_dbinsertusererror', 'auth_db', $user->username));
}
continue;
}
// if relevant, tag for password generation
if ($this->is_internal()) {
@@ -383,7 +398,6 @@ class auth_plugin_db extends auth_plugin_base {
}
}
}
$transaction->allow_commit();
unset($add_users); // free mem
}
return 0;