From 8f93c4084f711ee7b909bb3fa7829197ae5c65f0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Petr=20S=CC=8Ckoda?= Date: Tue, 18 Sep 2012 10:44:05 +0200 Subject: [PATCH] MDL-32572 skip problematic users in auth_db sync --- auth/db/auth.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/auth/db/auth.php b/auth/db/auth.php index fb0b95ac117..6e291470dec 100644 --- a/auth/db/auth.php +++ b/auth/db/auth.php @@ -346,7 +346,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 +372,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 +390,6 @@ class auth_plugin_db extends auth_plugin_base { } } } - $transaction->allow_commit(); unset($add_users); // free mem } return 0; -- 2.11.4.GIT