aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2007-07-24 08:57:24 +0000
committerNils Adermann <naderman@naderman.de>2007-07-24 08:57:24 +0000
commit0a8a67eb10ddb5e8e493392ad7df3afe20d5ecd1 (patch)
tree96658e6f504c11ce68edf0f6d8c3d97282f57cbe
parent2ee8394efa222c24edc68f917d22e0da5aefc119 (diff)
downloadforums-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.php32
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);
}