aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/db/db_tools.php
diff options
context:
space:
mode:
authorNathaniel Guse <nathaniel.guse@gmail.com>2013-02-11 21:37:15 -0600
committerNathaniel Guse <nathaniel.guse@gmail.com>2013-02-11 21:37:15 -0600
commit54e9f7b50ab8b25f63945c6ff09cc9ffa80c04af (patch)
tree09adec7705026866584002de8cb7f760581e876b /phpBB/includes/db/db_tools.php
parente4c37c159ab4eb152280dec8e46c9d98a26354a0 (diff)
parentfa33eae556c248ef6b2d41d9c9203b29e23dfb3a (diff)
downloadforums-54e9f7b50ab8b25f63945c6ff09cc9ffa80c04af.tar
forums-54e9f7b50ab8b25f63945c6ff09cc9ffa80c04af.tar.gz
forums-54e9f7b50ab8b25f63945c6ff09cc9ffa80c04af.tar.bz2
forums-54e9f7b50ab8b25f63945c6ff09cc9ffa80c04af.tar.xz
forums-54e9f7b50ab8b25f63945c6ff09cc9ffa80c04af.zip
Merge branch 'develop' of https://github.com/phpbb/phpbb3 into ticket/11103
# By Nathan Guse (28) and others # Via Andreas Fischer (9) and others * 'develop' of https://github.com/phpbb/phpbb3: (90 commits) [ticket/11350] Do not pass $db by reference; typehint phpbb_db_driver [feature/migrations] Remove default values from necessary parameters [ticket/11201] Revert WLM dropping because it is still used in China. [ticket/11220] Improvement to the info pop-up from "list=" [feature/migrations] Revert unrelated changes to functions.php [ticket/11233] prohibit selecting anonymous user as a PM recipient [ticket/11343] Remove spare parentheses. [ticket/11343] Remove spare space. [ticket/11343] Use === when checking stored user_actkey against user input. [ticket/11295] Correct cases: replace postgres with phpbb_db_driver_postgres. [ticket/10050] removing prosilver edits [ticket/9737] Fix some comments [ticket/11337] Abort setup-webserver.sh script when an error occurs. [ticket/11337] Only run functional tests on 5.3.19 or higher. No FPM otherwise. [ticket/11337] Silence nginx config file writing. [ticket/11337] php-fpm.conf is no longer owned by root. [ticket/11337] Run functional tests on travis using nginx and php-fpm. [ticket/11338] Travis CI: Install PHP extension for redis key-value store. [ticket/10050] adding .topicrow to template condition [ticket/9737] Fix a few minor things in migrations ... Conflicts: phpBB/config/services.yml phpBB/config/tables.yml
Diffstat (limited to 'phpBB/includes/db/db_tools.php')
-rw-r--r--phpBB/includes/db/db_tools.php31
1 files changed, 30 insertions, 1 deletions
diff --git a/phpBB/includes/db/db_tools.php b/phpBB/includes/db/db_tools.php
index 2bb016cebd..983cdc18ea 100644
--- a/phpBB/includes/db/db_tools.php
+++ b/phpBB/includes/db/db_tools.php
@@ -303,7 +303,7 @@ class phpbb_db_tools
* @param phpbb_db_driver $db Database connection
* @param bool $return_statements True if only statements should be returned and no SQL being executed
*/
- function phpbb_db_tools(&$db, $return_statements = false)
+ function phpbb_db_tools(phpbb_db_driver $db, $return_statements = false)
{
$this->db = $db;
$this->return_statements = $return_statements;
@@ -346,6 +346,17 @@ class phpbb_db_tools
}
/**
+ * Setter for {@link $return_statements return_statements}.
+ *
+ * @param bool $return_statements True if SQL should not be executed but returned as strings
+ * @return null
+ */
+ public function set_return_statements($return_statements)
+ {
+ $this->return_statements = $return_statements;
+ }
+
+ /**
* Gets a list of tables in the database.
*
* @return array Array of table names (all lower case)
@@ -674,6 +685,8 @@ class phpbb_db_tools
* Handle passed database update array.
* Expected structure...
* Key being one of the following
+ * drop_tables: Drop tables
+ * add_tables: Add tables
* change_columns: Column changes (only type, not name)
* add_columns: Add columns to a table
* drop_keys: Dropping keys
@@ -1817,6 +1830,22 @@ class phpbb_db_tools
case 'mssql':
case 'mssqlnative':
+ // remove default cosntraints first
+ // http://msdn.microsoft.com/en-us/library/aa175912%28v=sql.80%29.aspx
+ $statements[] = "DECLARE @drop_default_name VARCHAR(100), @cmd VARCHAR(1000)
+ SET @drop_default_name =
+ (SELECT so.name FROM sysobjects so
+ JOIN sysconstraints sc ON so.id = sc.constid
+ WHERE object_name(so.parent_obj) = '{$table_name}'
+ AND so.xtype = 'D'
+ AND sc.colid = (SELECT colid FROM syscolumns
+ WHERE id = object_id('{$table_name}')
+ AND name = '{$column_name}'))
+ IF @drop_default_name <> ''
+ BEGIN
+ SET @cmd = 'ALTER TABLE [{$table_name}] DROP CONSTRAINT [' + @drop_default_name + ']'
+ EXEC(@cmd)
+ END";
$statements[] = 'ALTER TABLE [' . $table_name . '] DROP COLUMN [' . $column_name . ']';
break;