From 306581d905c508e6d4a7bafebce1b90dbedbbf4a Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Tue, 24 Jul 2007 15:17:47 +0000 Subject: this should work fine now... git-svn-id: file:///svn/phpbb/trunk@7937 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/install/database_update.php | 66 +++++++++++++++++++++++++++++---------- 1 file changed, 49 insertions(+), 17 deletions(-) (limited to 'phpBB/install/database_update.php') diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 082d9a530e..74ffdc8c8a 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -1,14 +1,14 @@ + if (!isset($lang['CLEANING_USERNAMES'])) + { + $lang['CLEANING_USERNAMES'] = 'Cleaning usernames'; + } + + if (!isset($lang['LONG_SCRIPT_EXECUTION'])) + { + $lang['LONG_SCRIPT_EXECUTION'] = 'Please note that this can take a while... Please do not stop the script.'; + } + +?> +



-

Clean Usernames

+


-

Please note that this can take a while... Please do not stop the script.

-*/ + + +

+

:: +sql_query($sql); $colliding_users = $found_names = array(); + $echos = 0; + while ($row = $db->sql_fetchrow($result)) { // Calculate the new clean name. If it differs from the old one we need // to make sure there is no collision $clean_name = utf8_new_clean_string($row['username']); + if ($clean_name != $row['username_clean']) { + // Check if there would be a collission, if not put it up for changing $user_id = (int) $row['user_id']; // If this clean name was not the result of another user already ... @@ -621,14 +639,18 @@ 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) . '\' - AND user_id > ' . $user_id . ' - ORDER BY user_id'; + WHERE username_clean = \'' . $db->sql_escape($clean_name) . '\''; $result2 = $db->sql_query($sql); $user_ids = array($user_id); while ($row = $db->sql_fetchrow($result2)) { + // For not trimmed entries this could happen, yes. ;) + if ($row['user_id'] == $user_id) + { + continue; + } + // Make sure this clean name will still be the same with the // new function. If it is, then we have to add it to the list // of user ids for this clean name @@ -672,6 +694,13 @@ if (version_compare($current_version, '3.0.RC3', '<=')) } } } + + if (($echos % 1000) == 0) + { + echo '.'; + flush(); + } + $echos++; } $db->sql_freeresult($result); @@ -730,7 +759,8 @@ if (version_compare($current_version, '3.0.RC3', '<=')) // for the admin: keep name, change name (with text input) or delete user $u_action = "database_update.$phpEx?language=$language&type=$inline_update"; ?> -

+



+

@@ -830,7 +860,7 @@ if (version_compare($current_version, '3.0.RC3', '<='))
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 = \' ' . $user_id . '\' - WHERE user_id = ' . $user_id; + $sql = 'UPDATE ' . USERS_TABLE . " + SET username_clean = ' {$user_id}' + WHERE user_id = {$user_id}"; $db->sql_query($sql); } } -- cgit v1.2.1