diff options
author | Nils Adermann <naderman@naderman.de> | 2007-07-24 08:57:24 +0000 |
---|---|---|
committer | Nils Adermann <naderman@naderman.de> | 2007-07-24 08:57:24 +0000 |
commit | 0a8a67eb10ddb5e8e493392ad7df3afe20d5ecd1 (patch) | |
tree | 96658e6f504c11ce68edf0f6d8c3d97282f57cbe | |
parent | 2ee8394efa222c24edc68f917d22e0da5aefc119 (diff) | |
download | forums-0a8a67eb10ddb5e8e493392ad7df3afe20d5ecd1.tar forums-0a8a67eb10ddb5e8e493392ad7df3afe20d5ecd1.tar.gz forums-0a8a67eb10ddb5e8e493392ad7df3afe20d5ecd1.tar.bz2 forums-0a8a67eb10ddb5e8e493392ad7df3afe20d5ecd1.tar.xz forums-0a8a67eb10ddb5e8e493392ad7df3afe20d5ecd1.zip |
should speed things up a bit
git-svn-id: file:///svn/phpbb/trunk@7933 89ea8834-ac86-4346-8a33-228a782c2dd0
-rw-r--r-- | phpBB/install/database_update.php | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index fb10a62fda..082d9a530e 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -566,11 +566,10 @@ if (version_compare($current_version, '3.0.RC3', '<=')) if (!$errors) { - // We use utf8_new_clean_string() here to make sure the new one is really used. $sql = 'UPDATE ' . USERS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', array( 'username' => $data['username'], - 'username_clean' => utf8_new_clean_string($data['username']) + 'username_clean' => utf8_clean_string($data['username']) )) . ' WHERE user_id = ' . $user_id; $db->sql_query($sql); @@ -602,7 +601,7 @@ if (version_compare($current_version, '3.0.RC3', '<=')) // about them. $sql = 'SELECT user_id, username, username_clean FROM ' . USERS_TABLE . ' - ORDER BY user_id'; + ORDER BY user_id ASC'; $result = $db->sql_query($sql); $colliding_users = $found_names = array(); @@ -622,7 +621,9 @@ if (version_compare($current_version, '3.0.RC3', '<=')) // who already had this clean name with the old version $sql = 'SELECT user_id, username FROM ' . USERS_TABLE . ' - WHERE username_clean = \'' . $db->sql_escape($clean_name) . '\''; + WHERE username_clean = \'' . $db->sql_escape($clean_name) . '\' + AND user_id > ' . $user_id . ' + ORDER BY user_id'; $result2 = $db->sql_query($sql); $user_ids = array($user_id); @@ -672,7 +673,6 @@ if (version_compare($current_version, '3.0.RC3', '<=')) } } } - unset($found_names); $db->sql_freeresult($result); // now retrieve all information about the users and let the admin decide what to do @@ -833,22 +833,36 @@ if (version_compare($current_version, '3.0.RC3', '<=')) else { $sql = 'SELECT user_id, username, username_clean - FROM ' . USERS_TABLE; + FROM ' . USERS_TABLE . ' + WHERE ' . $db->sql_in_set('user_id', array_values($found_names)); $result = $db->sql_query($sql); - + + $found_names = array(); while ($row = $db->sql_fetchrow($result)) { $clean_name = utf8_new_clean_string($row['username']); if ($clean_name != $row['username_clean']) { + $user_id = (int) $row['user_id']; + $found_names[$user_id] = $clean_name; + // impossible unique clean name $sql = 'UPDATE ' . USERS_TABLE . ' - SET username_clean = \'' . $db->sql_escape($clean_name) . '\' - WHERE user_id = ' . (int) $row['user_id']; + SET username_clean = \' ' . $user_id . '\' + WHERE user_id = ' . $user_id; $db->sql_query($sql); } } $db->sql_freeresult($result); + + foreach ($found_names as $user_id => $clean_name) + { + $sql = 'UPDATE ' . USERS_TABLE . ' + SET username_clean = \'' . $db->sql_escape($clean_name) . '\' + WHERE user_id = ' . $user_id; + $db->sql_query($sql); + } } + unset($found_names); unset($colliding_users); } |