diff options
| -rw-r--r-- | phpBB/develop/add_permissions.php | 1 | ||||
| -rw-r--r-- | phpBB/docs/INSTALL.html | 2 | ||||
| -rw-r--r-- | phpBB/docs/README.html | 4 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_database.php | 2 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_reasons.php | 1 | ||||
| -rw-r--r-- | phpBB/includes/functions_admin.php | 1 | ||||
| -rw-r--r-- | phpBB/includes/functions_convert.php | 1 | ||||
| -rw-r--r-- | phpBB/includes/message_parser.php | 1 | ||||
| -rw-r--r-- | phpBB/install/convert/convertor.php | 2 | ||||
| -rw-r--r-- | phpBB/install/convertors/functions_phpbb20.php | 3 | ||||
| -rw-r--r-- | phpBB/language/en/install.php | 1 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/service.php | 1 | ||||
| -rw-r--r-- | phpBB/phpbb/db/driver/mssql.php | 494 | ||||
| -rw-r--r-- | phpBB/phpbb/db/extractor/factory.php | 2 | ||||
| -rw-r--r-- | phpBB/phpbb/db/extractor/mssql_extractor.php | 111 | ||||
| -rw-r--r-- | phpBB/phpbb/db/tools/factory.php | 2 | ||||
| -rw-r--r-- | phpBB/phpbb/db/tools/mssql.php | 1 | ||||
| -rw-r--r-- | phpBB/phpbb/install/helper/database.php | 9 | ||||
| -rw-r--r-- | phpBB/phpbb/install/module/install_database/task/add_default_data.php | 2 | ||||
| -rw-r--r-- | phpBB/search.php | 1 | ||||
| -rw-r--r-- | tests/functions/convert_30_dbms_to_31_test.php | 1 | 
21 files changed, 7 insertions, 636 deletions
| diff --git a/phpBB/develop/add_permissions.php b/phpBB/develop/add_permissions.php index a6fc8d686c..697dbdbaca 100644 --- a/phpBB/develop/add_permissions.php +++ b/phpBB/develop/add_permissions.php @@ -379,7 +379,6 @@ function mass_auth($ug_type, $forum_id, $ug_id, $acl_list, $setting)  						$sql = 'VALUES ' . implode(', ', preg_replace('#^(.*?)$#', '(\1)', $sql_subary));  						break; -					case 'mssql':  					case 'sqlite':  					case 'sqlite3':  						$sql = implode(' UNION ALL ', preg_replace('#^(.*?)$#', 'SELECT \1', $sql_subary)); diff --git a/phpBB/docs/INSTALL.html b/phpBB/docs/INSTALL.html index 11b1f70a1d..4837ad35e2 100644 --- a/phpBB/docs/INSTALL.html +++ b/phpBB/docs/INSTALL.html @@ -144,7 +144,7 @@  			<li>PostgreSQL 8.3+</li>  			<li>SQLite 2.8.2+</li>  			<li>SQLite 3.6.15+</li> -			<li>MS SQL Server 2000 or above (directly or via ODBC or the native adapter)</li> +			<li>MS SQL Server 2000 or above (via ODBC or the native adapter)</li>  			<li>Oracle</li>  		</ul>  		</li> diff --git a/phpBB/docs/README.html b/phpBB/docs/README.html index 4ab682e084..770c30f932 100644 --- a/phpBB/docs/README.html +++ b/phpBB/docs/README.html @@ -266,7 +266,7 @@  	<ul>  		<li>Your server type/version, e.g. Apache 2.2.3, IIS 7, Sambar, etc.</li>  		<li>PHP version and mode of operation, e.g. PHP 5.4.0 as a module, PHP 5.4.0 running as CGI, etc.</li> -		<li>DB type/version, e.g. MySQL 5.0.77, PostgreSQL 9.0.6, MSSQL Server 2000 SP1, etc.</li> +		<li>DB type/version, e.g. MySQL 5.0.77, PostgreSQL 9.0.6, MSSQL Server 2000 (via ODBC), etc.</li>  	</ul>  	<p>The relevant database type/version is listed within the administration control panel.</p> @@ -327,7 +327,7 @@  	<p>Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.</p> -	<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MariaDB 5.x, MSSQL Server 2000, PostgreSQL 8.x, Oracle 8, SQLite 2 and SQLite 3. Versions of PHP used range from 5.4.x above 5.6.x to 7.0.x without problem.</p> +	<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MariaDB 5.x, PostgreSQL 8.x, Oracle 8, SQLite 2 and SQLite 3. Versions of PHP used range from 5.4.x above 5.6.x to 7.0.x without problem.</p>  <a name="phpsec"></a><h3>7.i. Notice on PHP security issues</h3> diff --git a/phpBB/includes/acp/acp_database.php b/phpBB/includes/acp/acp_database.php index 982310fb05..364f5938e1 100644 --- a/phpBB/includes/acp/acp_database.php +++ b/phpBB/includes/acp/acp_database.php @@ -120,7 +120,6 @@ class acp_database  										$extractor->flush('DELETE FROM ' . $table_name . ";\n");  									break; -									case 'mssql':  									case 'mssql_odbc':  									case 'mssqlnative':  										$extractor->flush('TRUNCATE TABLE ' . $table_name . "GO\n"); @@ -360,7 +359,6 @@ class acp_database  									}  								break; -								case 'mssql':  								case 'mssql_odbc':  								case 'mssqlnative':  									while (($sql = $fgetd($fp, "GO\n", $read, $seek, $eof)) !== false) diff --git a/phpBB/includes/acp/acp_reasons.php b/phpBB/includes/acp/acp_reasons.php index b9b313c9db..020bd8f48c 100644 --- a/phpBB/includes/acp/acp_reasons.php +++ b/phpBB/includes/acp/acp_reasons.php @@ -231,7 +231,6 @@ class acp_reasons  						break;  						// Standard? What's that? -						case 'mssql':  						case 'mssql_odbc':  						case 'mssqlnative':  							// Change the reports using this reason to 'other' diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index 13b2b29274..df89b1c0ff 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -2872,7 +2872,6 @@ function get_database_size()  		break; -		case 'mssql':  		case 'mssql_odbc':  		case 'mssqlnative':  			$sql = 'SELECT @@VERSION AS mssql_version'; diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php index 27d3658e36..c508ef313b 100644 --- a/phpBB/includes/functions_convert.php +++ b/phpBB/includes/functions_convert.php @@ -1652,7 +1652,6 @@ function mass_auth($ug_type, $forum_id, $ug_id, $acl_list, $setting = ACL_NO)  						$sql = 'VALUES ' . implode(', ', preg_replace('#^(.*?)$#', '(\1)', $sql_subary));  					break; -					case 'mssql':  					case 'sqlite':  					case 'sqlite3':  					case 'mssqlnative': diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index 258837e4e2..5b585d4237 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -1470,7 +1470,6 @@ class parse_message extends bbcode_firstpass  			// For now setting the ttl to 10 minutes  			switch ($db->get_sql_layer())  			{ -				case 'mssql':  				case 'mssql_odbc':  				case 'mssqlnative':  					$sql = 'SELECT * diff --git a/phpBB/install/convert/convertor.php b/phpBB/install/convert/convertor.php index 5a3799a7a1..08e485f726 100644 --- a/phpBB/install/convert/convertor.php +++ b/phpBB/install/convert/convertor.php @@ -717,7 +717,6 @@ class convertor  				{  					switch ($db->get_sql_layer())  					{ -						case 'mssql':  						case 'mssql_odbc':  						case 'mssqlnative':  							$db->sql_query('SET IDENTITY_INSERT ' . $schema['target'] . ' ON'); @@ -845,7 +844,6 @@ class convertor  				{  					switch ($db->get_sql_layer())  					{ -						case 'mssql':  						case 'mssql_odbc':  						case 'mssqlnative':  							$db->sql_query('SET IDENTITY_INSERT ' . $schema['target'] . ' OFF'); diff --git a/phpBB/install/convertors/functions_phpbb20.php b/phpBB/install/convertors/functions_phpbb20.php index e8de7ef3e1..0e3ef43328 100644 --- a/phpBB/install/convertors/functions_phpbb20.php +++ b/phpBB/install/convertors/functions_phpbb20.php @@ -94,7 +94,6 @@ function phpbb_insert_forums()  	switch ($db->get_sql_layer())  	{ -		case 'mssql':  		case 'mssql_odbc':  		case 'mssqlnative':  			$db->sql_query('SET IDENTITY_INSERT ' . FORUMS_TABLE . ' ON'); @@ -294,7 +293,6 @@ function phpbb_insert_forums()  			$db->sql_query("SELECT SETVAL('" . FORUMS_TABLE . "_seq',(select case when max(forum_id)>0 then max(forum_id)+1 else 1 end from " . FORUMS_TABLE . '));');  		break; -		case 'mssql':  		case 'mssql_odbc':  		case 'mssqlnative':  			$db->sql_query('SET IDENTITY_INSERT ' . FORUMS_TABLE . ' OFF'); @@ -1780,7 +1778,6 @@ function phpbb_create_userconv_table()  			$map_dbms = 'mysql_41';  		break; -		case 'mssql':  		case 'mssql_odbc':  		case 'mssqlnative':  			$map_dbms = 'mssql'; diff --git a/phpBB/language/en/install.php b/phpBB/language/en/install.php index a6aef9797a..1bf09fdb26 100644 --- a/phpBB/language/en/install.php +++ b/phpBB/language/en/install.php @@ -185,7 +185,6 @@ $lang = array_merge($lang, array(  	'TABLE_PREFIX_EXPLAIN'	=> 'The prefix must start with a letter and must only contain letters, numbers and underscores.',  	// Database options -	'DB_OPTION_MSSQL'		=> 'MSSQL Server 2000+',  	'DB_OPTION_MSSQL_ODBC'	=> 'MSSQL Server 2000+ via ODBC',  	'DB_OPTION_MSSQLNATIVE'	=> 'MSSQL Server 2005+ [ Native ]',  	'DB_OPTION_MYSQL'		=> 'MySQL', diff --git a/phpBB/phpbb/cache/service.php b/phpBB/phpbb/cache/service.php index a022c00bc6..8a4366fed1 100644 --- a/phpBB/phpbb/cache/service.php +++ b/phpBB/phpbb/cache/service.php @@ -302,7 +302,6 @@ class service  		{  			switch ($this->db->get_sql_layer())  			{ -				case 'mssql':  				case 'mssql_odbc':  				case 'mssqlnative':  					$sql = 'SELECT user_id, bot_agent, bot_ip diff --git a/phpBB/phpbb/db/driver/mssql.php b/phpBB/phpbb/db/driver/mssql.php deleted file mode 100644 index dfdbfe15e6..0000000000 --- a/phpBB/phpbb/db/driver/mssql.php +++ /dev/null @@ -1,494 +0,0 @@ -<?php -/** -* -* This file is part of the phpBB Forum Software package. -* -* @copyright (c) phpBB Limited <https://www.phpbb.com> -* @license GNU General Public License, version 2 (GPL-2.0) -* -* For full copyright and license information, please see -* the docs/CREDITS.txt file. -* -*/ - -namespace phpbb\db\driver; - -/** -* MSSQL Database Abstraction Layer -* Minimum Requirement is MSSQL 2000+ -*/ -class mssql extends \phpbb\db\driver\driver -{ -	var $connect_error = ''; - -	/** -	* {@inheritDoc} -	*/ -	function sql_connect($sqlserver, $sqluser, $sqlpassword, $database, $port = false, $persistency = false, $new_link = false) -	{ -		if (!function_exists('mssql_connect')) -		{ -			$this->connect_error = 'mssql_connect function does not exist, is mssql extension installed?'; -			return $this->sql_error(''); -		} - -		$this->persistency = $persistency; -		$this->user = $sqluser; -		$this->dbname = $database; - -		$port_delimiter = (defined('PHP_OS') && substr(PHP_OS, 0, 3) === 'WIN') ? ',' : ':'; -		$this->server = $sqlserver . (($port) ? $port_delimiter . $port : ''); - -		@ini_set('mssql.charset', 'UTF-8'); -		@ini_set('mssql.textlimit', 2147483647); -		@ini_set('mssql.textsize', 2147483647); - -		$this->db_connect_id = ($this->persistency) ? @mssql_pconnect($this->server, $this->user, $sqlpassword, $new_link) : @mssql_connect($this->server, $this->user, $sqlpassword, $new_link); - -		if ($this->db_connect_id && $this->dbname != '') -		{ -			if (!@mssql_select_db($this->dbname, $this->db_connect_id)) -			{ -				@mssql_close($this->db_connect_id); -				return false; -			} -		} - -		return ($this->db_connect_id) ? $this->db_connect_id : $this->sql_error(''); -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_server_info($raw = false, $use_cache = true) -	{ -		global $cache; - -		if (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('mssql_version')) === false) -		{ -			$result_id = @mssql_query("SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY('productlevel'), SERVERPROPERTY('edition')", $this->db_connect_id); - -			$row = false; -			if ($result_id) -			{ -				$row = mssql_fetch_assoc($result_id); -				mssql_free_result($result_id); -			} - -			$this->sql_server_version = ($row) ? trim(implode(' ', $row)) : 0; - -			if (!empty($cache) && $use_cache) -			{ -				$cache->put('mssql_version', $this->sql_server_version); -			} -		} - -		if ($raw) -		{ -			return $this->sql_server_version; -		} - -		return ($this->sql_server_version) ? 'MSSQL<br />' . $this->sql_server_version : 'MSSQL'; -	} - -	/** -	* {@inheritDoc} -	*/ -	public function sql_concatenate($expr1, $expr2) -	{ -		return $expr1 . ' + ' . $expr2; -	} - -	/** -	* SQL Transaction -	* @access private -	*/ -	function _sql_transaction($status = 'begin') -	{ -		switch ($status) -		{ -			case 'begin': -				return @mssql_query('BEGIN TRANSACTION', $this->db_connect_id); -			break; - -			case 'commit': -				return @mssql_query('COMMIT TRANSACTION', $this->db_connect_id); -			break; - -			case 'rollback': -				return @mssql_query('ROLLBACK TRANSACTION', $this->db_connect_id); -			break; -		} - -		return true; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_query($query = '', $cache_ttl = 0) -	{ -		if ($query != '') -		{ -			global $cache; - -			// EXPLAIN only in extra debug mode -			if (defined('DEBUG')) -			{ -				$this->sql_report('start', $query); -			} -			else if (defined('PHPBB_DISPLAY_LOAD_TIME')) -			{ -				$this->curtime = microtime(true); -			} - -			$this->query_result = ($cache && $cache_ttl) ? $cache->sql_load($query) : false; -			$this->sql_add_num_queries($this->query_result); - -			if ($this->query_result === false) -			{ -				if (($this->query_result = @mssql_query($query, $this->db_connect_id)) === false) -				{ -					$this->sql_error($query); -				} - -				if (defined('DEBUG')) -				{ -					$this->sql_report('stop', $query); -				} -				else if (defined('PHPBB_DISPLAY_LOAD_TIME')) -				{ -					$this->sql_time += microtime(true) - $this->curtime; -				} - -				if (!$this->query_result) -				{ -					return false; -				} - -				if ($cache && $cache_ttl) -				{ -					$this->open_queries[(int) $this->query_result] = $this->query_result; -					$this->query_result = $cache->sql_save($this, $query, $this->query_result, $cache_ttl); -				} -				else if (strpos($query, 'SELECT') === 0 && $this->query_result !== true) -				{ -					$this->open_queries[(int) $this->query_result] = $this->query_result; -				} -			} -			else if (defined('DEBUG')) -			{ -				$this->sql_report('fromcache', $query); -			} -		} -		else -		{ -			return false; -		} - -		return $this->query_result; -	} - -	/** -	* Build LIMIT query -	*/ -	function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) -	{ -		$this->query_result = false; - -		// Since TOP is only returning a set number of rows we won't need it if total is set to 0 (return all rows) -		if ($total) -		{ -			// We need to grab the total number of rows + the offset number of rows to get the correct result -			if (strpos($query, 'SELECT DISTINCT') === 0) -			{ -				$query = 'SELECT DISTINCT TOP ' . ($total + $offset) . ' ' . substr($query, 15); -			} -			else -			{ -				$query = 'SELECT TOP ' . ($total + $offset) . ' ' . substr($query, 6); -			} -		} - -		$result = $this->sql_query($query, $cache_ttl); - -		// Seek by $offset rows -		if ($offset) -		{ -			$this->sql_rowseek($offset, $result); -		} - -		return $result; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_affectedrows() -	{ -		return ($this->db_connect_id) ? @mssql_rows_affected($this->db_connect_id) : false; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_fetchrow($query_id = false) -	{ -		global $cache; - -		if ($query_id === false) -		{ -			$query_id = $this->query_result; -		} - -		if ($cache && $cache->sql_exists($query_id)) -		{ -			return $cache->sql_fetchrow($query_id); -		} - -		if (!$query_id || $query_id === true) -		{ -			return false; -		} - -		$row = mssql_fetch_assoc($query_id); - -		// I hope i am able to remove this later... hopefully only a PHP or MSSQL bug -		if ($row) -		{ -			foreach ($row as $key => $value) -			{ -				$row[$key] = ($value === ' ' || $value === null) ? '' : $value; -			} -		} - -		return $row; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_rowseek($rownum, &$query_id) -	{ -		global $cache; - -		if ($query_id === false) -		{ -			$query_id = $this->query_result; -		} - -		if ($query_id === true) -		{ -			return false; -		} - -		if ($cache && $cache->sql_exists($query_id)) -		{ -			return $cache->sql_rowseek($rownum, $query_id); -		} - -		return ($query_id) ? @mssql_data_seek($query_id, $rownum) : false; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_nextid() -	{ -		$result_id = @mssql_query('SELECT SCOPE_IDENTITY()', $this->db_connect_id); -		if ($result_id) -		{ -			if ($row = mssql_fetch_assoc($result_id)) -			{ -				mssql_free_result($result_id); -				return $row['computed']; -			} -			mssql_free_result($result_id); -		} - -		return false; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_freeresult($query_id = false) -	{ -		global $cache; - -		if ($query_id === false) -		{ -			$query_id = $this->query_result; -		} - -		if ($query_id === true) -		{ -			return false; -		} - -		if ($cache && !is_object($query_id) && $cache->sql_exists($query_id)) -		{ -			return $cache->sql_freeresult($query_id); -		} - -		if (isset($this->open_queries[(int) $query_id])) -		{ -			unset($this->open_queries[(int) $query_id]); -			return mssql_free_result($query_id); -		} - -		return false; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_escape($msg) -	{ -		return str_replace(array("'", "\0"), array("''", ''), $msg); -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_lower_text($column_name) -	{ -		return "LOWER(SUBSTRING($column_name, 1, DATALENGTH($column_name)))"; -	} - -	/** -	* Build LIKE expression -	* @access private -	*/ -	function _sql_like_expression($expression) -	{ -		return $expression . " ESCAPE '\\'"; -	} - -	/** -	* Build NOT LIKE expression -	* @access private -	*/ -	function _sql_not_like_expression($expression) -	{ -		return $expression . " ESCAPE '\\'"; -	} - -	/** -	* return sql error array -	* @access private -	*/ -	function _sql_error() -	{ -		if (function_exists('mssql_get_last_message')) -		{ -			$error = array( -				'message'	=> @mssql_get_last_message(), -				'code'		=> '', -			); - -			// Get error code number -			$result_id = @mssql_query('SELECT @@ERROR as code', $this->db_connect_id); -			if ($result_id) -			{ -				$row = mssql_fetch_assoc($result_id); -				$error['code'] = $row['code']; -				mssql_free_result($result_id); -			} - -			// Get full error message if possible -			$sql = 'SELECT CAST(description as varchar(255)) as message -				FROM master.dbo.sysmessages -				WHERE error = ' . $error['code']; -			$result_id = @mssql_query($sql); - -			if ($result_id) -			{ -				$row = mssql_fetch_assoc($result_id); -				if (!empty($row['message'])) -				{ -					$error['message'] .= '<br />' . $row['message']; -				} -				mssql_free_result($result_id); -			} -		} -		else -		{ -			$error = array( -				'message'	=> $this->connect_error, -				'code'		=> '', -			); -		} - -		return $error; -	} - -	/** -	* Build db-specific query data -	* @access private -	*/ -	function _sql_custom_build($stage, $data) -	{ -		return $data; -	} - -	/** -	* Close sql connection -	* @access private -	*/ -	function _sql_close() -	{ -		return @mssql_close($this->db_connect_id); -	} - -	/** -	* Build db-specific report -	* @access private -	*/ -	function _sql_report($mode, $query = '') -	{ -		switch ($mode) -		{ -			case 'start': -				$html_table = false; -				@mssql_query('SET SHOWPLAN_TEXT ON;', $this->db_connect_id); -				if ($result = @mssql_query($query, $this->db_connect_id)) -				{ -					@mssql_next_result($result); -					while ($row = mssql_fetch_row($result)) -					{ -						$html_table = $this->sql_report('add_select_row', $query, $html_table, $row); -					} -				} -				@mssql_query('SET SHOWPLAN_TEXT OFF;', $this->db_connect_id); -				mssql_free_result($result); - -				if ($html_table) -				{ -					$this->html_hold .= '</table>'; -				} -			break; - -			case 'fromcache': -				$endtime = explode(' ', microtime()); -				$endtime = $endtime[0] + $endtime[1]; - -				$result = @mssql_query($query, $this->db_connect_id); -				if ($result) -				{ -					while ($void = mssql_fetch_assoc($result)) -					{ -						// Take the time spent on parsing rows into account -					} -					mssql_free_result($result); -				} - -				$splittime = explode(' ', microtime()); -				$splittime = $splittime[0] + $splittime[1]; - -				$this->sql_report('record_fromcache', $query, $endtime, $splittime); - -			break; -		} -	} -} diff --git a/phpBB/phpbb/db/extractor/factory.php b/phpBB/phpbb/db/extractor/factory.php index a1ffb65595..eed3661ae9 100644 --- a/phpBB/phpbb/db/extractor/factory.php +++ b/phpBB/phpbb/db/extractor/factory.php @@ -49,7 +49,7 @@ class factory  	public function get()  	{  		// Return the appropriate DB extractor -		if ($this->db instanceof \phpbb\db\driver\mssql || $this->db instanceof \phpbb\db\driver\mssql_base) +		if ($this->db instanceof \phpbb\db\driver\mssql_base)  		{  			return $this->container->get('dbal.extractor.extractors.mssql_extractor');  		} diff --git a/phpBB/phpbb/db/extractor/mssql_extractor.php b/phpBB/phpbb/db/extractor/mssql_extractor.php index fc30f4789d..2817d3ebcc 100644 --- a/phpBB/phpbb/db/extractor/mssql_extractor.php +++ b/phpBB/phpbb/db/extractor/mssql_extractor.php @@ -180,11 +180,7 @@ class mssql_extractor extends base_extractor  			throw new extractor_not_initialized_exception();  		} -		if ($this->db->get_sql_layer() === 'mssql') -		{ -			$this->write_data_mssql($table_name); -		} -		else if ($this->db->get_sql_layer() === 'mssqlnative') +		if ($this->db->get_sql_layer() === 'mssqlnative')  		{  			$this->write_data_mssqlnative($table_name);  		} @@ -195,111 +191,6 @@ class mssql_extractor extends base_extractor  	}  	/** -	* Extracts data from database table (for MSSQL driver) -	* -	* @param	string	$table_name	name of the database table -	* @return null -	* @throws \phpbb\db\extractor\exception\extractor_not_initialized_exception when calling this function before init_extractor() -	*/ -	protected function write_data_mssql($table_name) -	{ -		if (!$this->is_initialized) -		{ -			throw new extractor_not_initialized_exception(); -		} - -		$ary_type = $ary_name = array(); -		$ident_set = false; -		$sql_data = ''; - -		// Grab all of the data from current table. -		$sql = "SELECT * -			FROM $table_name"; -		$result = $this->db->sql_query($sql); - -		$retrieved_data = mssql_num_rows($result); - -		$i_num_fields = mssql_num_fields($result); - -		for ($i = 0; $i < $i_num_fields; $i++) -		{ -			$ary_type[$i] = mssql_field_type($result, $i); -			$ary_name[$i] = mssql_field_name($result, $i); -		} - -		if ($retrieved_data) -		{ -			$sql = "SELECT 1 as has_identity -				FROM INFORMATION_SCHEMA.COLUMNS -				WHERE COLUMNPROPERTY(object_id('$table_name'), COLUMN_NAME, 'IsIdentity') = 1"; -			$result2 = $this->db->sql_query($sql); -			$row2 = $this->db->sql_fetchrow($result2); -			if (!empty($row2['has_identity'])) -			{ -				$sql_data .= "\nSET IDENTITY_INSERT $table_name ON\nGO\n"; -				$ident_set = true; -			} -			$this->db->sql_freeresult($result2); -		} - -		while ($row = $this->db->sql_fetchrow($result)) -		{ -			$schema_vals = $schema_fields = array(); - -			// Build the SQL statement to recreate the data. -			for ($i = 0; $i < $i_num_fields; $i++) -			{ -				$str_val = $row[$ary_name[$i]]; - -				if (preg_match('#char|text|bool|varbinary#i', $ary_type[$i])) -				{ -					$str_quote = ''; -					$str_empty = "''"; -					$str_val = sanitize_data_mssql(str_replace("'", "''", $str_val)); -				} -				else if (preg_match('#date|timestamp#i', $ary_type[$i])) -				{ -					if (empty($str_val)) -					{ -						$str_quote = ''; -					} -					else -					{ -						$str_quote = "'"; -					} -				} -				else -				{ -					$str_quote = ''; -					$str_empty = 'NULL'; -				} - -				if (empty($str_val) && $str_val !== '0' && !(is_int($str_val) || is_float($str_val))) -				{ -					$str_val = $str_empty; -				} - -				$schema_vals[$i] = $str_quote . $str_val . $str_quote; -				$schema_fields[$i] = $ary_name[$i]; -			} - -			// Take the ordered fields and their associated data and build it -			// into a valid sql statement to recreate that field in the data. -			$sql_data .= "INSERT INTO $table_name (" . implode(', ', $schema_fields) . ') VALUES (' . implode(', ', $schema_vals) . ");\nGO\n"; - -			$this->flush($sql_data); -			$sql_data = ''; -		} -		$this->db->sql_freeresult($result); - -		if ($retrieved_data && $ident_set) -		{ -			$sql_data .= "\nSET IDENTITY_INSERT $table_name OFF\nGO\n"; -		} -		$this->flush($sql_data); -	} - -	/**  	* Extracts data from database table (for MSSQL Native driver)  	*  	* @param	string	$table_name	name of the database table diff --git a/phpBB/phpbb/db/tools/factory.php b/phpBB/phpbb/db/tools/factory.php index d204451a63..96471c3408 100644 --- a/phpBB/phpbb/db/tools/factory.php +++ b/phpBB/phpbb/db/tools/factory.php @@ -25,7 +25,7 @@ class factory  	 */  	public function get($db_driver, $return_statements = false)  	{ -		if ($db_driver instanceof \phpbb\db\driver\mssql || $db_driver instanceof \phpbb\db\driver\mssql_base) +		if ($db_driver instanceof \phpbb\db\driver\mssql_base)  		{  			return new \phpbb\db\tools\mssql($db_driver, $return_statements);  		} diff --git a/phpBB/phpbb/db/tools/mssql.php b/phpBB/phpbb/db/tools/mssql.php index 87719acd21..a132832005 100644 --- a/phpBB/phpbb/db/tools/mssql.php +++ b/phpBB/phpbb/db/tools/mssql.php @@ -110,7 +110,6 @@ class mssql extends tools  		// Determine mapping database type  		switch ($this->db->get_sql_layer())  		{ -			case 'mssql':  			case 'mssql_odbc':  				$this->sql_layer = 'mssql';  			break; diff --git a/phpBB/phpbb/install/helper/database.php b/phpBB/phpbb/install/helper/database.php index b8422fc1ed..be0c953d28 100644 --- a/phpBB/phpbb/install/helper/database.php +++ b/phpBB/phpbb/install/helper/database.php @@ -54,15 +54,6 @@ class database  			'AVAILABLE'		=> true,  			'2.0.x'			=> true,  		), -		'mssql'		=> array( -			'LABEL'			=> 'MS SQL Server 2000+', -			'SCHEMA'		=> 'mssql', -			'MODULE'		=> 'mssql', -			'DELIM'			=> ';', -			'DRIVER'		=> 'phpbb\db\driver\mssql', -			'AVAILABLE'		=> true, -			'2.0.x'			=> true, -		),  		'mssql_odbc'=>	array(  			'LABEL'			=> 'MS SQL Server [ ODBC ]',  			'SCHEMA'		=> 'mssql', diff --git a/phpBB/phpbb/install/module/install_database/task/add_default_data.php b/phpBB/phpbb/install/module/install_database/task/add_default_data.php index f5157637ee..e32101a3f7 100644 --- a/phpBB/phpbb/install/module/install_database/task/add_default_data.php +++ b/phpBB/phpbb/install/module/install_database/task/add_default_data.php @@ -134,7 +134,7 @@ class add_default_data extends \phpbb\install\task_base  	 */  	protected function replace_dbms_specific_sql($query)  	{ -		if ($this->db instanceof \phpbb\db\driver\mssql_base || $this->db instanceof \phpbb\db\driver\mssql) +		if ($this->db instanceof \phpbb\db\driver\mssql_base)  		{  			$query = preg_replace('#\# MSSQL IDENTITY (phpbb_[a-z_]+) (ON|OFF) \##s', 'SET IDENTITY_INSERT \1 \2;', $query);  		} diff --git a/phpBB/search.php b/phpBB/search.php index 5946e7531e..4e722dda56 100644 --- a/phpBB/search.php +++ b/phpBB/search.php @@ -1487,7 +1487,6 @@ if ($auth->acl_get('a_search'))  				ORDER BY search_time DESC';  		break; -		case 'mssql':  		case 'mssql_odbc':  		case 'mssqlnative':  			$sql = 'SELECT search_time, search_keywords diff --git a/tests/functions/convert_30_dbms_to_31_test.php b/tests/functions/convert_30_dbms_to_31_test.php index 1405d81eb3..e46a569565 100644 --- a/tests/functions/convert_30_dbms_to_31_test.php +++ b/tests/functions/convert_30_dbms_to_31_test.php @@ -16,7 +16,6 @@ class phpbb_convert_30_dbms_to_31_test extends phpbb_test_case  	public function convert_30_dbms_to_31_data()  	{  		return array( -			array('mssql'),  			array('mssql_odbc'),  			array('mssqlnative'),  			array('mysql'), | 
