From f0c780a45359ceb3eb3fe8ab6b0e5f8c0f07e26f Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 19 Dec 2012 13:35:48 +0100 Subject: [ticket/11278] Fix not running queries from db tools in database update The db_tools class is running in return mode, which means that the queries are not run, but just returned. Therefor the broken tables were not removed from the database. PHPBB3-11278 --- phpBB/install/database_update.php | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'phpBB') diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 983b1b46c4..0281aea0b3 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -1017,7 +1017,7 @@ function database_update_info() *****************************************************************************/ function change_database_data(&$no_updates, $version) { - global $db, $errored, $error_ary, $config, $phpbb_root_path, $phpEx; + global $db, $db_tools, $errored, $error_ary, $config, $phpbb_root_path, $phpEx; switch ($version) { @@ -1332,8 +1332,6 @@ function change_database_data(&$no_updates, $version) ), ); - global $db_tools; - $statements = $db_tools->perform_schema_changes($changes); foreach ($statements as $sql) @@ -1975,24 +1973,25 @@ function change_database_data(&$no_updates, $version) } $db->sql_freeresult($result); - global $db_tools, $table_prefix; + global $table_prefix; // Recover from potentially broken Q&A CAPTCHA table on firebird // Q&A CAPTCHA was uninstallable, so it's safe to remove these // without data loss if ($db_tools->sql_layer == 'firebird') { - $tables = array( - $table_prefix . 'captcha_questions', - $table_prefix . 'captcha_answers', - $table_prefix . 'qa_confirm', + $changes = array( + 'drop_tables' => array( + $table_prefix . 'captcha_questions', + $table_prefix . 'captcha_answers', + $table_prefix . 'qa_confirm', + ), ); - foreach ($tables as $table) + $statements = $db_tools->perform_schema_changes($changes); + + foreach ($statements as $sql) { - if ($db_tools->sql_table_exists($table)) - { - $db_tools->sql_table_drop($table); - } + _sql($sql, $errored, $error_ary); } } -- cgit v1.2.1 From 68ffb106fb2f9b246f52cf94f09c187531059f3e Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 21 Dec 2012 16:05:05 +0100 Subject: [ticket/11278] Comment out the code for dropping the Q&A tables Due to a bug, vanilla phpbb could not create captcha tables in 3.0.8 on firebird. It was possible for board administrators to adjust the code to work. If code was manually adjusted by board administrators, index names would not be the same as what 3.0.9 and newer expect. This code fragment drops captcha tables, destroying all entered Q&A captcha configuration, such that when Q&A is configured next the respective tables will be created with corrent index names. If you wish to preserve your Q&A captcha configuration, you can manually rename indexes to the currently expected name: phpbb_captcha_questions_lang_iso => phpbb_captcha_question_lang phpbb_captcha_answers_question_id => phpbb_captcha_answers_qid Again, this needs to be done only if a board was manually modified to fix broken captcha code. PHPBB3-11278 --- phpBB/install/database_update.php | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'phpBB') diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 0281aea0b3..8aa62af7e1 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -1017,7 +1017,7 @@ function database_update_info() *****************************************************************************/ function change_database_data(&$no_updates, $version) { - global $db, $db_tools, $errored, $error_ary, $config, $phpbb_root_path, $phpEx; + global $db, $db_tools, $errored, $error_ary, $config, $table_prefix, $phpbb_root_path, $phpEx; switch ($version) { @@ -1973,11 +1973,24 @@ function change_database_data(&$no_updates, $version) } $db->sql_freeresult($result); - global $table_prefix; - - // Recover from potentially broken Q&A CAPTCHA table on firebird - // Q&A CAPTCHA was uninstallable, so it's safe to remove these - // without data loss + /* + * Due to a bug, vanilla phpbb could not create captcha tables + * in 3.0.8 on firebird. It was possible for board administrators + * to adjust the code to work. If code was manually adjusted by + * board administrators, index names would not be the same as + * what 3.0.9 and newer expect. This code fragment drops captcha + * tables, destroying all entered Q&A captcha configuration, such + * that when Q&A is configured next the respective tables will be + * created with correct index names. + * + * If you wish to preserve your Q&A captcha configuration, you can + * manually rename indexes to the currently expected name: + * phpbb_captcha_questions_lang_iso => phpbb_captcha_questions_lang + * phpbb_captcha_answers_question_id => phpbb_captcha_answers_qid + * + * Again, this needs to be done only if a board was manually modified + * to fix broken captcha code. + * if ($db_tools->sql_layer == 'firebird') { $changes = array( @@ -1994,6 +2007,7 @@ function change_database_data(&$no_updates, $version) _sql($sql, $errored, $error_ary); } } + */ $no_updates = false; break; -- cgit v1.2.1