From f7e37dae867ef28295f00bbe2d27ebf065a8a3fd Mon Sep 17 00:00:00 2001 From: Andreas Fischer Date: Mon, 8 Nov 2010 01:16:37 +0100 Subject: [ticket/9885] Fix extension group name updater. Loop through all languages. Fix a regression introduced by 58dc5a191c0203ea6d98c37df26b0830b3bf8203. The problem is that $user->add_lang() includes language strings from the board root folder instead of the update folder. Because the database updater is run first, the root folder files have not been upgrade yet. Thus, the language strings we're looking for cannot be found. Since the language strings we are looking for have been moved from the install.php language file to acp/attachments.php it should be possible to always find them in either file. When there is an acp/attachments.php file in the update package, it can also be used. We now also loop through all the installed languages as well, because the board could have been installed in a language other than the admin's current language. PHPBB3-9885 PHPBB3-7717 --- phpBB/install/database_update.php | 70 +++++++++++++++++++++++++-------------- 1 file changed, 46 insertions(+), 24 deletions(-) (limited to 'phpBB/install/database_update.php') diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index e65237266b..7443185935 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -925,7 +925,7 @@ function database_update_info() *****************************************************************************/ function change_database_data(&$no_updates, $version) { - global $db, $errored, $error_ary, $config, $phpbb_root_path, $phpEx, $user; + global $db, $errored, $error_ary, $config, $phpbb_root_path, $phpEx; switch ($version) { @@ -1653,33 +1653,55 @@ function change_database_data(&$no_updates, $version) // Changes from 3.0.7-PL1 to 3.0.8-RC1 case '3.0.7-PL1': - $user->add_lang('acp/attachments'); - $extension_groups = array( - $user->lang['EXT_GROUP_ARCHIVES'] => 'ARCHIVES', - $user->lang['EXT_GROUP_DOCUMENTS'] => 'DOCUMENTS', - $user->lang['EXT_GROUP_DOWNLOADABLE_FILES'] => 'DOWNLOADABLE_FILES', - $user->lang['EXT_GROUP_FLASH_FILES'] => 'FLASH_FILES', - $user->lang['EXT_GROUP_IMAGES'] => 'IMAGES', - $user->lang['EXT_GROUP_PLAIN_TEXT'] => 'PLAIN_TEXT', - $user->lang['EXT_GROUP_QUICKTIME_MEDIA'] => 'QUICKTIME_MEDIA', - $user->lang['EXT_GROUP_REAL_MEDIA'] => 'REAL_MEDIA', - $user->lang['EXT_GROUP_WINDOWS_MEDIA'] => 'WINDOWS_MEDIA', - ); - - $sql = 'SELECT group_id, group_name - FROM ' . EXTENSION_GROUPS_TABLE; + // Update file extension group names to use language strings. + $sql = 'SELECT lang_dir + FROM ' . LANG_TABLE; $result = $db->sql_query($sql); - while ($row = $db->sql_fetchrow($result)) + $extension_groups_updated = array(); + while ($lang_dir = $db->sql_fetchfield('lang_dir')) { - if (isset($extension_groups[$row['group_name']])) + $lang_dir = basename($lang_dir); + + // The language strings we need are either in language/.../acp/attachments.php + // in the update package if we're updating to 3.0.8-RC1 or later, + // or they are in language/.../install.php when we're updating from 3.0.7-PL1 or earlier. + // On an already updated board, they can also already be in language/.../acp/attachments.php + // in the board root. + $lang_files = array( + "{$phpbb_root_path}install/update/new/language/$lang_dir/acp/attachments.$phpEx", + "{$phpbb_root_path}language/$lang_dir/install.$phpEx", + "{$phpbb_root_path}language/$lang_dir/acp/attachments.$phpEx", + ); + + foreach ($lang_files as $lang_file) { - $sql_ary = array( - 'group_name' => $extension_groups[$row['group_name']], - ); - $sql = 'UPDATE ' . EXTENSION_GROUPS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' - WHERE group_id = ' . (int) $row['group_id']; - _sql($sql, $errored, $error_ary); + if (!file_exists($lang_file)) + { + continue; + } + + $lang = array(); + include($lang_file); + + foreach($lang as $lang_key => $lang_val) + { + if (isset($extension_groups_updated[$lang_key]) || strpos($lang_key, 'EXT_GROUP_') !== 0) + { + continue; + } + + $sql_ary = array( + 'group_name' => substr($lang_key, 10), // Strip off 'EXT_GROUP_' + ); + + $sql = 'UPDATE ' . EXTENSION_GROUPS_TABLE . ' + SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " + WHERE group_name = '" . $db->sql_escape($lang_val) . "'"; + _sql($sql, $errored, $error_ary); + + $extension_groups_updated[$lang_key] = true; + } } } $db->sql_freeresult($result); -- cgit v1.2.1 From 794c0f6b68e678b1384fd5d7627d9a81dfb04568 Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Sun, 7 Nov 2010 22:48:52 +0100 Subject: [develop-olympus] Bumping version number for 3.0.8-RC1. --- phpBB/install/database_update.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'phpBB/install/database_update.php') diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index e65237266b..86b83bb542 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -8,7 +8,7 @@ * */ -$updates_to_version = '3.0.8-dev'; +$updates_to_version = '3.0.8-RC1'; // Enter any version to update from to test updates. The version within the db will not be updated. $debug_from_version = false; @@ -3754,4 +3754,4 @@ class updater_db_tools } } -?> \ No newline at end of file +?> -- cgit v1.2.1 From b88f35caef616a3bded1193c67f7b84086644ff5 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 8 Nov 2010 23:22:06 +0100 Subject: [ticket/9888] Update fails when Bing [Bot] was already added to the users table Added a check whether the user already exists before we try to add it. PHPBB3-9888 --- phpBB/install/database_update.php | 91 ++++++++++++++++++++++----------------- 1 file changed, 51 insertions(+), 40 deletions(-) (limited to 'phpBB/install/database_update.php') diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index e65237266b..b3ae38a7b6 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -1707,55 +1707,66 @@ function change_database_data(&$no_updates, $version) _sql($sql, $errored, $error_ary); // add Bing Bot - $sql = 'SELECT group_id, group_colour - FROM ' . GROUPS_TABLE . " - WHERE group_name = 'BOTS'"; + $bot_name = 'Bing [Bot]'; + $bot_name_clean = utf8_clean_string($bot_name); + + $sql = 'SELECT user_id + FROM ' . USERS_TABLE . " + WHERE username_clean = '" . $db->sql_escape($bot_name_clean) . "'"; $result = $db->sql_query($sql); - $group_row = $db->sql_fetchrow($result); + $bing_already_added = (bool) $db->sql_fetchfield('user_id'); $db->sql_freeresult($result); - if (!$group_row) + if (!$bing_already_added) { - // default fallback, should never get here - $group_row['group_id'] = 6; - $group_row['group_colour'] = '9E8DA7'; - } + $bot_agent = 'bingbot/'; + $bot_ip = ''; + $sql = 'SELECT group_id, group_colour + FROM ' . GROUPS_TABLE . " + WHERE group_name = 'BOTS'"; + $result = $db->sql_query($sql); + $group_row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); - if (!function_exists('user_add')) - { - include($phpbb_root_path . 'includes/functions_user.' . $phpEx); - } + if (!$group_row) + { + // default fallback, should never get here + $group_row['group_id'] = 6; + $group_row['group_colour'] = '9E8DA7'; + } - $bot_name = 'Bing [Bot]'; - $bot_agent = 'bingbot/'; - $bot_ip = ''; - - $user_row = array( - 'user_type' => USER_IGNORE, - 'group_id' => $group_row['group_id'], - 'username' => $bot_name, - 'user_regdate' => time(), - 'user_password' => '', - 'user_colour' => $group_row['group_colour'], - 'user_email' => '', - 'user_lang' => $config['default_lang'], - 'user_style' => $config['default_style'], - 'user_timezone' => 0, - 'user_dateformat' => $config['default_dateformat'], - 'user_allow_massemail' => 0, - ); + if (!function_exists('user_add')) + { + include($phpbb_root_path . 'includes/functions_user.' . $phpEx); + } - $user_id = user_add($user_row); + $user_row = array( + 'user_type' => USER_IGNORE, + 'group_id' => $group_row['group_id'], + 'username' => $bot_name, + 'user_regdate' => time(), + 'user_password' => '', + 'user_colour' => $group_row['group_colour'], + 'user_email' => '', + 'user_lang' => $config['default_lang'], + 'user_style' => $config['default_style'], + 'user_timezone' => 0, + 'user_dateformat' => $config['default_dateformat'], + 'user_allow_massemail' => 0, + ); - $sql = 'INSERT INTO ' . BOTS_TABLE . ' ' . $db->sql_build_array('INSERT', array( - 'bot_active' => 1, - 'bot_name' => (string) $bot_name, - 'user_id' => (int) $user_id, - 'bot_agent' => (string) $bot_agent, - 'bot_ip' => (string) $bot_ip, - )); + $user_id = user_add($user_row); - _sql($sql, $errored, $error_ary); + $sql = 'INSERT INTO ' . BOTS_TABLE . ' ' . $db->sql_build_array('INSERT', array( + 'bot_active' => 1, + 'bot_name' => (string) $bot_name, + 'user_id' => (int) $user_id, + 'bot_agent' => (string) $bot_agent, + 'bot_ip' => (string) $bot_ip, + )); + + _sql($sql, $errored, $error_ary); + } // end Bing Bot addition // Delete shadow topics pointing to not existing topics -- cgit v1.2.1