diff options
Diffstat (limited to 'phpBB/phpbb')
25 files changed, 364 insertions, 725 deletions
diff --git a/phpBB/phpbb/auth/provider_collection.php b/phpBB/phpbb/auth/provider_collection.php index fe32a34e12..a74a2135dc 100644 --- a/phpBB/phpbb/auth/provider_collection.php +++ b/phpBB/phpbb/auth/provider_collection.php @@ -29,7 +29,7 @@ class provider_collection extends \phpbb\di\service_collection  	* @param ContainerInterface $container Container object  	* @param \phpbb\config\config $config phpBB config  	*/ -	public function __construct($container, \phpbb\config\config $config) +	public function __construct(ContainerInterface $container, \phpbb\config\config $config)  	{  		$this->container = $container;  		$this->config = $config; diff --git a/phpBB/phpbb/cache/service.php b/phpBB/phpbb/cache/service.php index c9aa6525c0..e47177758a 100644 --- a/phpBB/phpbb/cache/service.php +++ b/phpBB/phpbb/cache/service.php @@ -316,13 +316,6 @@ class service  					ORDER BY LEN(bot_agent) DESC';  				break; -				case 'firebird': -					$sql = 'SELECT user_id, bot_agent, bot_ip -						FROM ' . BOTS_TABLE . ' -						WHERE bot_active = 1 -					ORDER BY CHAR_LENGTH(bot_agent) DESC'; -				break; -  				// LENGTH supported by MySQL, IBM DB2 and Oracle for sure...  				default:  					$sql = 'SELECT user_id, bot_agent, bot_ip diff --git a/phpBB/phpbb/db/driver/firebird.php b/phpBB/phpbb/db/driver/firebird.php deleted file mode 100644 index c7b185a577..0000000000 --- a/phpBB/phpbb/db/driver/firebird.php +++ /dev/null @@ -1,526 +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; - -/** -* Firebird/Interbase Database Abstraction Layer -* Minimum Requirement is Firebird 2.1 -*/ -class firebird extends \phpbb\db\driver\driver -{ -	var $last_query_text = ''; -	var $service_handle = false; -	var $affected_rows = 0; -	var $connect_error = ''; - -	/** -	* {@inheritDoc} -	*/ -	function sql_connect($sqlserver, $sqluser, $sqlpassword, $database, $port = false, $persistency = false, $new_link = false) -	{ -		$this->persistency = $persistency; -		$this->user = $sqluser; -		$this->server = $sqlserver . (($port) ? ':' . $port : ''); -		$this->dbname = str_replace('\\', '/', $database); - -		// There are three possibilities to connect to an interbase db -		if (!$this->server) -		{ -			$use_database = $this->dbname; -		} -		else if (strpos($this->server, '//') === 0) -		{ -			$use_database = $this->server . $this->dbname; -		} -		else -		{ -			$use_database = $this->server . ':' . $this->dbname; -		} - -		if ($this->persistency) -		{ -			if (!function_exists('ibase_pconnect')) -			{ -				$this->connect_error = 'ibase_pconnect function does not exist, is interbase extension installed?'; -				return $this->sql_error(''); -			} -			$this->db_connect_id = @ibase_pconnect($use_database, $this->user, $sqlpassword, false, false, 3); -		} -		else -		{ -			if (!function_exists('ibase_connect')) -			{ -				$this->connect_error = 'ibase_connect function does not exist, is interbase extension installed?'; -				return $this->sql_error(''); -			} -			$this->db_connect_id = @ibase_connect($use_database, $this->user, $sqlpassword, false, false, 3); -		} - -		// Do not call ibase_service_attach if connection failed, -		// otherwise error message from ibase_(p)connect call will be clobbered. -		if ($this->db_connect_id && function_exists('ibase_service_attach') && $this->server) -		{ -			$this->service_handle = @ibase_service_attach($this->server, $this->user, $sqlpassword); -		} -		else -		{ -			$this->service_handle = false; -		} - -		return ($this->db_connect_id) ? $this->db_connect_id : $this->sql_error(''); -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_server_info($raw = false, $use_cache = true) -	{ -		/** -		* force $use_cache false.  I didn't research why the caching code there is no caching code -		* but I assume its because the IB extension provides a direct method to access it -		* without a query. -		*/ - -		$use_cache = false; - -		if ($this->service_handle !== false && function_exists('ibase_server_info')) -		{ -			return @ibase_server_info($this->service_handle, IBASE_SVC_SERVER_VERSION); -		} - -		return ($raw) ? '2.1' : 'Firebird/Interbase'; -	} - -	/** -	* SQL Transaction -	* @access private -	*/ -	function _sql_transaction($status = 'begin') -	{ -		switch ($status) -		{ -			case 'begin': -				return true; -			break; - -			case 'commit': -				return @ibase_commit(); -			break; - -			case 'rollback': -				return @ibase_rollback(); -			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); -			} - -			$this->last_query_text = $query; -			$this->query_result = ($cache && $cache_ttl) ? $cache->sql_load($query) : false; -			$this->sql_add_num_queries($this->query_result); - -			if ($this->query_result === false) -			{ -				$array = array(); -				// We overcome Firebird's 32767 char limit by binding vars -				if (strlen($query) > 32767) -				{ -					if (preg_match('/^(INSERT INTO[^(]++)\\(([^()]+)\\) VALUES[^(]++\\((.*?)\\)$/s', $query, $regs)) -					{ -						if (strlen($regs[3]) > 32767) -						{ -							preg_match_all('/\'(?:[^\']++|\'\')*+\'|[\d-.]+/', $regs[3], $vals, PREG_PATTERN_ORDER); - -							$inserts = $vals[0]; -							unset($vals); - -							foreach ($inserts as $key => $value) -							{ -								if (!empty($value) && $value[0] === "'" && strlen($value) > 32769) // check to see if this thing is greater than the max + 'x2 -								{ -									$inserts[$key] = '?'; -									$array[] = str_replace("''", "'", substr($value, 1, -1)); -								} -							} - -							$query = $regs[1] . '(' . $regs[2] . ') VALUES (' . implode(', ', $inserts) . ')'; -						} -					} -					else if (preg_match('/^(UPDATE ([\\w_]++)\\s+SET )([\\w_]++\\s*=\\s*(?:\'(?:[^\']++|\'\')*+\'|\\d+)(?:,\\s*[\\w_]++\\s*=\\s*(?:\'(?:[^\']++|\'\')*+\'|[\d-.]+))*+)\\s+(WHERE.*)$/s', $query, $data)) -					{ -						if (strlen($data[3]) > 32767) -						{ -							$update = $data[1]; -							$where = $data[4]; -							preg_match_all('/(\\w++)\\s*=\\s*(\'(?:[^\']++|\'\')*+\'|[\d-.]++)/', $data[3], $temp, PREG_SET_ORDER); -							unset($data); - -							$cols = array(); -							foreach ($temp as $value) -							{ -								if (!empty($value[2]) && $value[2][0] === "'" && strlen($value[2]) > 32769) // check to see if this thing is greater than the max + 'x2 -								{ -									$array[] = str_replace("''", "'", substr($value[2], 1, -1)); -									$cols[] = $value[1] . '=?'; -								} -								else -								{ -									$cols[] = $value[1] . '=' . $value[2]; -								} -							} - -							$query = $update . implode(', ', $cols) . ' ' . $where; -							unset($cols); -						} -					} -				} - -				if (!function_exists('ibase_affected_rows') && (preg_match('/^UPDATE ([\w_]++)\s+SET [\w_]++\s*=\s*(?:\'(?:[^\']++|\'\')*+\'|[\d-.]+)(?:,\s*[\w_]++\s*=\s*(?:\'(?:[^\']++|\'\')*+\'|[\d-.]+))*+\s+(WHERE.*)?$/s', $query, $regs) || preg_match('/^DELETE FROM ([\w_]++)\s*(WHERE\s*.*)?$/s', $query, $regs))) -				{ -					$affected_sql = 'SELECT COUNT(*) as num_rows_affected FROM ' . $regs[1]; -					if (!empty($regs[2])) -					{ -						$affected_sql .= ' ' . $regs[2]; -					} - -					if (!($temp_q_id = @ibase_query($this->db_connect_id, $affected_sql))) -					{ -						return false; -					} - -					$temp_result = @ibase_fetch_assoc($temp_q_id); -					@ibase_free_result($temp_q_id); - -					$this->affected_rows = ($temp_result) ? $temp_result['NUM_ROWS_AFFECTED'] : false; -				} - -				if (sizeof($array)) -				{ -					$p_query = @ibase_prepare($this->db_connect_id, $query); -					array_unshift($array, $p_query); -					$this->query_result = call_user_func_array('ibase_execute', $array); -					unset($array); - -					if ($this->query_result === false) -					{ -						$this->sql_error($query); -					} -				} -				else if (($this->query_result = @ibase_query($this->db_connect_id, $query)) === false) -				{ -					$this->sql_error($query); -				} - -				if (defined('DEBUG')) -				{ -					$this->sql_report('stop', $query); -				} - -				if (!$this->transaction) -				{ -					if (function_exists('ibase_commit_ret')) -					{ -						@ibase_commit_ret(); -					} -					else -					{ -						// way cooler than ibase_commit_ret :D -						@ibase_query('COMMIT RETAIN;'); -					} -				} - -				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) -				{ -					$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; - -		$query = 'SELECT FIRST ' . $total . ((!empty($offset)) ? ' SKIP ' . $offset : '') . substr($query, 6); - -		return $this->sql_query($query, $cache_ttl); -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_affectedrows() -	{ -		// PHP 5+ function -		if (function_exists('ibase_affected_rows')) -		{ -			return ($this->db_connect_id) ? @ibase_affected_rows($this->db_connect_id) : false; -		} -		else -		{ -			return $this->affected_rows; -		} -	} - -	/** -	* {@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 === false) -		{ -			return false; -		} - -		$row = array(); -		$cur_row = @ibase_fetch_object($query_id, IBASE_TEXT); - -		if (!$cur_row) -		{ -			return false; -		} - -		foreach (get_object_vars($cur_row) as $key => $value) -		{ -			$row[strtolower($key)] = (is_string($value)) ? trim(str_replace(array("\\0", "\\n"), array("\0", "\n"), $value)) : $value; -		} - -		return (sizeof($row)) ? $row : false; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_nextid() -	{ -		$query_id = $this->query_result; - -		if ($query_id !== false && $this->last_query_text != '') -		{ -			if ($this->query_result && preg_match('#^INSERT[\t\n ]+INTO[\t\n ]+([a-z0-9\_\-]+)#i', $this->last_query_text, $tablename)) -			{ -				$sql = 'SELECT GEN_ID(' . $tablename[1] . '_gen, 0) AS new_id FROM RDB$DATABASE'; - -				if (!($temp_q_id = @ibase_query($this->db_connect_id, $sql))) -				{ -					return false; -				} - -				$temp_result = @ibase_fetch_assoc($temp_q_id); -				@ibase_free_result($temp_q_id); - -				return ($temp_result) ? $temp_result['NEW_ID'] : false; -			} -		} - -		return false; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_freeresult($query_id = false) -	{ -		global $cache; - -		if ($query_id === false) -		{ -			$query_id = $this->query_result; -		} - -		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 @ibase_free_result($query_id); -		} - -		return false; -	} - -	/** -	* {@inheritDoc} -	*/ -	function sql_escape($msg) -	{ -		return str_replace(array("'", "\0"), array("''", ''), $msg); -	} - -	/** -	* Build LIKE expression -	* @access private -	*/ -	function _sql_like_expression($expression) -	{ -		return $expression . " ESCAPE '\\'"; -	} - -	/** -	* Build db-specific query data -	* @access private -	*/ -	function _sql_custom_build($stage, $data) -	{ -		return $data; -	} - -	function _sql_bit_and($column_name, $bit, $compare = '') -	{ -		return 'BIN_AND(' . $column_name . ', ' . (1 << $bit) . ')' . (($compare) ? ' ' . $compare : ''); -	} - -	function _sql_bit_or($column_name, $bit, $compare = '') -	{ -		return 'BIN_OR(' . $column_name . ', ' . (1 << $bit) . ')' . (($compare) ? ' ' . $compare : ''); -	} - -	/** -	* {@inheritDoc} -	*/ -	function cast_expr_to_bigint($expression) -	{ -		// Precision must be from 1 to 18 -		return 'CAST(' . $expression . ' as DECIMAL(18, 0))'; -	} - -	/** -	* {@inheritDoc} -	*/ -	function cast_expr_to_string($expression) -	{ -		return 'CAST(' . $expression . ' as VARCHAR(255))'; -	} - -	/** -	* return sql error array -	* @access private -	*/ -	function _sql_error() -	{ -		// Need special handling here because ibase_errmsg returns -		// connection errors, however if the interbase extension -		// is not installed then ibase_errmsg does not exist and -		// we cannot call it. -		if (function_exists('ibase_errmsg')) -		{ -			$msg = @ibase_errmsg(); -			if (!$msg) -			{ -				$msg = $this->connect_error; -			} -		} -		else -		{ -			$msg = $this->connect_error; -		} -		return array( -			'message'	=> $msg, -			'code'		=> (@function_exists('ibase_errcode') ? @ibase_errcode() : '') -		); -	} - -	/** -	* Close sql connection -	* @access private -	*/ -	function _sql_close() -	{ -		if ($this->service_handle !== false) -		{ -			@ibase_service_detach($this->service_handle); -		} - -		return @ibase_close($this->db_connect_id); -	} - -	/** -	* Build db-specific report -	* @access private -	*/ -	function _sql_report($mode, $query = '') -	{ -		switch ($mode) -		{ -			case 'start': -			break; - -			case 'fromcache': -				$endtime = explode(' ', microtime()); -				$endtime = $endtime[0] + $endtime[1]; - -				$result = @ibase_query($this->db_connect_id, $query); -				while ($void = @ibase_fetch_object($result, IBASE_TEXT)) -				{ -					// Take the time spent on parsing rows into account -				} -				@ibase_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/driver/mssql.php b/phpBB/phpbb/db/driver/mssql.php index 2e56638617..268463a151 100644 --- a/phpBB/phpbb/db/driver/mssql.php +++ b/phpBB/phpbb/db/driver/mssql.php @@ -137,6 +137,10 @@ class mssql extends \phpbb\db\driver\driver  			{  				$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); @@ -152,6 +156,10 @@ class mssql extends \phpbb\db\driver\driver  				{  					$this->sql_report('stop', $query);  				} +				else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +				{ +					$this->sql_time += microtime(true) - $this->curtime; +				}  				if ($cache && $cache_ttl)  				{ diff --git a/phpBB/phpbb/db/driver/mssql_odbc.php b/phpBB/phpbb/db/driver/mssql_odbc.php index de90d878e7..8e5d4c7a4c 100644 --- a/phpBB/phpbb/db/driver/mssql_odbc.php +++ b/phpBB/phpbb/db/driver/mssql_odbc.php @@ -156,6 +156,10 @@ class mssql_odbc extends \phpbb\db\driver\mssql_base  			{  				$this->sql_report('start', $query);  			} +			else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +			{ +				$this->curtime = microtime(true); +			}  			$this->last_query_text = $query;  			$this->query_result = ($cache && $cache_ttl) ? $cache->sql_load($query) : false; @@ -172,6 +176,10 @@ class mssql_odbc extends \phpbb\db\driver\mssql_base  				{  					$this->sql_report('stop', $query);  				} +				else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +				{ +					$this->sql_time += microtime(true) - $this->curtime; +				}  				if ($cache && $cache_ttl)  				{ diff --git a/phpBB/phpbb/db/driver/mssqlnative.php b/phpBB/phpbb/db/driver/mssqlnative.php index a7f93c8feb..46a9b3a477 100644 --- a/phpBB/phpbb/db/driver/mssqlnative.php +++ b/phpBB/phpbb/db/driver/mssqlnative.php @@ -127,6 +127,10 @@ class mssqlnative extends \phpbb\db\driver\mssql_base  			{  				$this->sql_report('start', $query);  			} +			else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +			{ +				$this->curtime = microtime(true); +			}  			$this->last_query_text = $query;  			$this->query_result = ($cache && $cache_ttl) ? $cache->sql_load($query) : false; @@ -145,6 +149,10 @@ class mssqlnative extends \phpbb\db\driver\mssql_base  				{  					$this->sql_report('stop', $query);  				} +				else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +				{ +					$this->sql_time += microtime(true) - $this->curtime; +				}  				if ($cache && $cache_ttl)  				{ diff --git a/phpBB/phpbb/db/driver/mysql.php b/phpBB/phpbb/db/driver/mysql.php index 569bd4f10a..e93c7239e8 100644 --- a/phpBB/phpbb/db/driver/mysql.php +++ b/phpBB/phpbb/db/driver/mysql.php @@ -166,6 +166,10 @@ class mysql extends \phpbb\db\driver\mysql_base  			{  				$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); @@ -181,6 +185,10 @@ class mysql extends \phpbb\db\driver\mysql_base  				{  					$this->sql_report('stop', $query);  				} +				else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +				{ +					$this->sql_time += microtime(true) - $this->curtime; +				}  				if ($cache && $cache_ttl)  				{ diff --git a/phpBB/phpbb/db/driver/mysqli.php b/phpBB/phpbb/db/driver/mysqli.php index 520bb65b67..8fc306b2cc 100644 --- a/phpBB/phpbb/db/driver/mysqli.php +++ b/phpBB/phpbb/db/driver/mysqli.php @@ -175,6 +175,10 @@ class mysqli extends \phpbb\db\driver\mysql_base  			{  				$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); @@ -190,6 +194,10 @@ class mysqli extends \phpbb\db\driver\mysql_base  				{  					$this->sql_report('stop', $query);  				} +				else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +				{ +					$this->sql_time += microtime(true) - $this->curtime; +				}  				if ($cache && $cache_ttl)  				{ diff --git a/phpBB/phpbb/db/driver/oracle.php b/phpBB/phpbb/db/driver/oracle.php index bfc5373e35..d1a186f1ba 100644 --- a/phpBB/phpbb/db/driver/oracle.php +++ b/phpBB/phpbb/db/driver/oracle.php @@ -253,6 +253,10 @@ class oracle extends \phpbb\db\driver\driver  			{  				$this->sql_report('start', $query);  			} +			else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +			{ +				$this->curtime = microtime(true); +			}  			$this->last_query_text = $query;  			$this->query_result = ($cache && $cache_ttl) ? $cache->sql_load($query) : false; @@ -430,6 +434,10 @@ class oracle extends \phpbb\db\driver\driver  				{  					$this->sql_report('stop', $query);  				} +				else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +				{ +					$this->sql_time += microtime(true) - $this->curtime; +				}  				if ($cache && $cache_ttl)  				{ diff --git a/phpBB/phpbb/db/driver/postgres.php b/phpBB/phpbb/db/driver/postgres.php index a4aa9497ed..a67cd9f7c2 100644 --- a/phpBB/phpbb/db/driver/postgres.php +++ b/phpBB/phpbb/db/driver/postgres.php @@ -179,6 +179,10 @@ class postgres extends \phpbb\db\driver\driver  			{  				$this->sql_report('start', $query);  			} +			else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +			{ +				$this->curtime = microtime(true); +			}  			$this->last_query_text = $query;  			$this->query_result = ($cache && $cache_ttl) ? $cache->sql_load($query) : false; @@ -195,6 +199,10 @@ class postgres extends \phpbb\db\driver\driver  				{  					$this->sql_report('stop', $query);  				} +				else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +				{ +					$this->sql_time += microtime(true) - $this->curtime; +				}  				if ($cache && $cache_ttl)  				{ diff --git a/phpBB/phpbb/db/driver/sqlite.php b/phpBB/phpbb/db/driver/sqlite.php index f4c5e240fc..2112e5ba2f 100644 --- a/phpBB/phpbb/db/driver/sqlite.php +++ b/phpBB/phpbb/db/driver/sqlite.php @@ -121,6 +121,10 @@ class sqlite extends \phpbb\db\driver\driver  			{  				$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); @@ -136,6 +140,10 @@ class sqlite extends \phpbb\db\driver\driver  				{  					$this->sql_report('stop', $query);  				} +				else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +				{ +					$this->sql_time += microtime(true) - $this->curtime; +				}  				if ($cache && $cache_ttl)  				{ diff --git a/phpBB/phpbb/db/driver/sqlite3.php b/phpBB/phpbb/db/driver/sqlite3.php index 2c6bf99497..6511c755a0 100644 --- a/phpBB/phpbb/db/driver/sqlite3.php +++ b/phpBB/phpbb/db/driver/sqlite3.php @@ -121,6 +121,10 @@ class sqlite3 extends \phpbb\db\driver\driver  			{  				$this->sql_report('start', $query);  			} +			else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +			{ +				$this->curtime = microtime(true); +			}  			$this->last_query_text = $query;  			$this->query_result = ($cache && $cache_ttl) ? $cache->sql_load($query) : false; @@ -137,6 +141,10 @@ class sqlite3 extends \phpbb\db\driver\driver  				{  					$this->sql_report('stop', $query);  				} +				else if (defined('PHPBB_DISPLAY_LOAD_TIME')) +				{ +					$this->sql_time += microtime(true) - $this->curtime; +				}  				if ($cache && $cache_ttl)  				{ diff --git a/phpBB/phpbb/db/tools.php b/phpBB/phpbb/db/tools.php index 2ee842eace..2ec46ed239 100644 --- a/phpBB/phpbb/db/tools.php +++ b/phpBB/phpbb/db/tools.php @@ -109,36 +109,6 @@ class tools  				'VARBINARY'	=> 'varbinary(255)',  			), -			'firebird'	=> array( -				'INT:'		=> 'INTEGER', -				'BINT'		=> 'DOUBLE PRECISION', -				'UINT'		=> 'INTEGER', -				'UINT:'		=> 'INTEGER', -				'TINT:'		=> 'INTEGER', -				'USINT'		=> 'INTEGER', -				'BOOL'		=> 'INTEGER', -				'VCHAR'		=> 'VARCHAR(255) CHARACTER SET NONE', -				'VCHAR:'	=> 'VARCHAR(%d) CHARACTER SET NONE', -				'CHAR:'		=> 'CHAR(%d) CHARACTER SET NONE', -				'XSTEXT'	=> 'BLOB SUB_TYPE TEXT CHARACTER SET NONE', -				'STEXT'		=> 'BLOB SUB_TYPE TEXT CHARACTER SET NONE', -				'TEXT'		=> 'BLOB SUB_TYPE TEXT CHARACTER SET NONE', -				'MTEXT'		=> 'BLOB SUB_TYPE TEXT CHARACTER SET NONE', -				'XSTEXT_UNI'=> 'VARCHAR(100) CHARACTER SET UTF8', -				'STEXT_UNI'	=> 'VARCHAR(255) CHARACTER SET UTF8', -				'TEXT_UNI'	=> 'BLOB SUB_TYPE TEXT CHARACTER SET UTF8', -				'MTEXT_UNI'	=> 'BLOB SUB_TYPE TEXT CHARACTER SET UTF8', -				'TIMESTAMP'	=> 'INTEGER', -				'DECIMAL'	=> 'DOUBLE PRECISION', -				'DECIMAL:'	=> 'DOUBLE PRECISION', -				'PDECIMAL'	=> 'DOUBLE PRECISION', -				'PDECIMAL:'	=> 'DOUBLE PRECISION', -				'VCHAR_UNI'	=> 'VARCHAR(255) CHARACTER SET UTF8', -				'VCHAR_UNI:'=> 'VARCHAR(%d) CHARACTER SET UTF8', -				'VCHAR_CI'	=> 'VARCHAR(255) CHARACTER SET UTF8', -				'VARBINARY'	=> 'CHAR(255) CHARACTER SET NONE', -			), -  			'mssql'		=> array(  				'INT:'		=> '[int]',  				'BINT'		=> '[float]', @@ -331,7 +301,7 @@ class tools  	* A list of supported DBMS. We change this class to support more DBMS, the DBMS itself only need to follow some rules.  	* @var array  	*/ -	var $supported_dbms = array('firebird', 'mssql', 'mssqlnative', 'mysql_40', 'mysql_41', 'oracle', 'postgres', 'sqlite', 'sqlite3'); +	var $supported_dbms = array('mssql', 'mssqlnative', 'mysql_40', 'mysql_41', 'oracle', 'postgres', 'sqlite', 'sqlite3');  	/**  	* This is set to true if user only wants to return the 'to-be-executed' SQL statement(s) (as an array). @@ -441,13 +411,6 @@ class tools  					FROM pg_stat_user_tables';  			break; -			case 'firebird': -				$sql = 'SELECT rdb$relation_name -					FROM rdb$relations -					WHERE rdb$view_source is null -						AND rdb$system_flag = 0'; -			break; -  			case 'oracle':  				$sql = 'SELECT table_name  					FROM USER_TABLES'; @@ -580,7 +543,6 @@ class tools  		// Close the table for two DBMS and add to the statements  		switch ($this->sql_layer)  		{ -			case 'firebird':  			case 'mssql':  			case 'mssqlnative':  				$table_sql .= "\n);"; @@ -610,7 +572,6 @@ class tools  						$table_sql .= ",\n\t PRIMARY KEY (" . implode(', ', $table_data['PRIMARY_KEY']) . ')';  					break; -					case 'firebird':  					case 'mssql':  					case 'mssqlnative':  						// We need the data here @@ -685,19 +646,6 @@ class tools  					$statements[] = $trigger;  				}  			break; - -			case 'firebird': -				if ($create_sequence) -				{ -					$statements[] = "CREATE GENERATOR {$table_name}_gen;"; -					$statements[] = "SET GENERATOR {$table_name}_gen TO 0;"; - -					$trigger = "CREATE TRIGGER t_$table_name FOR $table_name\n"; -					$trigger .= "BEFORE INSERT\nAS\nBEGIN\n"; -					$trigger .= "\tNEW.{$create_sequence} = GEN_ID({$table_name}_gen, 1);\nEND;"; -					$statements[] = $trigger; -				} -			break;  		}  		// Write Keys @@ -1174,12 +1122,6 @@ class tools  					WHERE LOWER(table_name) = '" . strtolower($table) . "'";  			break; -			case 'firebird': -				$sql = "SELECT RDB\$FIELD_NAME as FNAME -					FROM RDB\$RELATION_FIELDS -					WHERE RDB\$RELATION_NAME = '" . strtoupper($table) . "'"; -			break; -  			case 'sqlite':  			case 'sqlite3':  				$sql = "SELECT sql @@ -1278,15 +1220,6 @@ class tools  		switch ($this->sql_layer)  		{ -			case 'firebird': -				$sql = "SELECT LOWER(RDB\$INDEX_NAME) as index_name -					FROM RDB\$INDICES -					WHERE RDB\$RELATION_NAME = '" . strtoupper($table_name) . "' -						AND RDB\$UNIQUE_FLAG IS NULL -						AND RDB\$FOREIGN_KEY IS NULL"; -				$col = 'index_name'; -			break; -  			case 'postgres':  				$sql = "SELECT ic.relname as index_name  					FROM pg_class bc, pg_class ic, pg_index i @@ -1332,7 +1265,6 @@ class tools  			// These DBMS prefix index name with the table name  			switch ($this->sql_layer)  			{ -				case 'firebird':  				case 'oracle':  				case 'postgres':  				case 'sqlite': @@ -1385,15 +1317,6 @@ class tools  		switch ($this->sql_layer)  		{ -			case 'firebird': -				$sql = "SELECT LOWER(RDB\$INDEX_NAME) as index_name -					FROM RDB\$INDICES -					WHERE RDB\$RELATION_NAME = '" . strtoupper($table_name) . "' -						AND RDB\$UNIQUE_FLAG IS NOT NULL -						AND RDB\$FOREIGN_KEY IS NULL"; -				$col = 'index_name'; -			break; -  			case 'postgres':  				$sql = "SELECT ic.relname as index_name, i.indisunique  					FROM pg_class bc, pg_class ic, pg_index i @@ -1460,7 +1383,6 @@ class tools  					}  				break; -				case 'firebird':  				case 'postgres':  				case 'sqlite':  				case 'sqlite3': @@ -1536,32 +1458,6 @@ class tools  		switch ($this->sql_layer)  		{ -			case 'firebird': -				$sql .= " {$column_type} "; -				$return_array['column_type_sql_type'] = " {$column_type} "; - -				if (!is_null($column_data[1])) -				{ -					$sql .= 'DEFAULT ' . ((is_numeric($column_data[1])) ? $column_data[1] : "'{$column_data[1]}'") . ' '; -					$return_array['column_type_sql_default'] = ((is_numeric($column_data[1])) ? $column_data[1] : "'{$column_data[1]}'") . ' '; -				} - -				$sql .= 'NOT NULL'; - -				// This is a UNICODE column and thus should be given it's fair share -				if (preg_match('/^X?STEXT_UNI|VCHAR_(CI|UNI:?)/', $column_data[0])) -				{ -					$sql .= ' COLLATE UNICODE'; -				} - -				$return_array['auto_increment'] = false; -				if (isset($column_data[2]) && $column_data[2] == 'auto_increment') -				{ -					$return_array['auto_increment'] = true; -				} - -			break; -  			case 'mssql':  			case 'mssqlnative':  				$sql .= " {$column_type} "; @@ -1772,11 +1668,6 @@ class tools  		switch ($this->sql_layer)  		{ -			case 'firebird': -				// Does not support AFTER statement, only POSITION (and there you need the column position) -				$statements[] = 'ALTER TABLE ' . $table_name . ' ADD "' . strtoupper($column_name) . '" ' . $column_data['column_type_sql']; -			break; -  			case 'mssql':  			case 'mssqlnative':  				// Does not support AFTER, only through temporary table @@ -1894,10 +1785,6 @@ class tools  		switch ($this->sql_layer)  		{ -			case 'firebird': -				$statements[] = 'ALTER TABLE ' . $table_name . ' DROP "' . strtoupper($column_name) . '"'; -			break; -  			case 'mssql':  			case 'mssqlnative':  				// We need the data here @@ -2036,7 +1923,6 @@ class tools  				$statements[] = 'DROP INDEX ' . $index_name . ' ON ' . $table_name;  			break; -			case 'firebird':  			case 'oracle':  			case 'postgres':  			case 'sqlite': @@ -2065,21 +1951,6 @@ class tools  		switch ($this->sql_layer)  		{ -			case 'firebird': -				$sql = 'SELECT RDB$GENERATOR_NAME as gen -					FROM RDB$GENERATORS -					WHERE RDB$SYSTEM_FLAG = 0 -						AND RDB$GENERATOR_NAME = \'' . strtoupper($table_name) . "_GEN'"; -				$result = $this->db->sql_query($sql); - -				// does a generator exist? -				if ($row = $this->db->sql_fetchrow($result)) -				{ -					$statements[] = "DROP GENERATOR {$row['gen']};"; -				} -				$this->db->sql_freeresult($result); -			break; -  			case 'oracle':  				$sql = 'SELECT A.REFERENCED_NAME  					FROM USER_DEPENDENCIES A, USER_TRIGGERS B @@ -2125,7 +1996,6 @@ class tools  		switch ($this->sql_layer)  		{ -			case 'firebird':  			case 'postgres':  			case 'mysql_40':  			case 'mysql_41': @@ -2217,7 +2087,6 @@ class tools  		switch ($this->sql_layer)  		{ -			case 'firebird':  			case 'postgres':  			case 'oracle':  			case 'sqlite': @@ -2261,7 +2130,6 @@ class tools  		switch ($this->sql_layer)  		{ -			case 'firebird':  			case 'postgres':  			case 'oracle':  			case 'sqlite': @@ -2320,15 +2188,6 @@ class tools  		{  			switch ($this->sql_layer)  			{ -				case 'firebird': -					$sql = "SELECT LOWER(RDB\$INDEX_NAME) as index_name -						FROM RDB\$INDICES -						WHERE RDB\$RELATION_NAME = '" . strtoupper($table_name) . "' -							AND RDB\$UNIQUE_FLAG IS NULL -							AND RDB\$FOREIGN_KEY IS NULL"; -					$col = 'index_name'; -				break; -  				case 'postgres':  					$sql = "SELECT ic.relname as index_name  						FROM pg_class bc, pg_class ic, pg_index i @@ -2373,7 +2232,6 @@ class tools  				switch ($this->sql_layer)  				{ -					case 'firebird':  					case 'oracle':  					case 'postgres':  					case 'sqlite': @@ -2400,20 +2258,6 @@ class tools  		switch ($this->sql_layer)  		{ -			case 'firebird': -				// Change type... -				if (!empty($column_data['column_type_sql_default'])) -				{ -					$statements[] = 'ALTER TABLE ' . $table_name . ' ALTER COLUMN "' . strtoupper($column_name) . '" TYPE ' . ' ' . $column_data['column_type_sql_type']; -					$statements[] = 'ALTER TABLE ' . $table_name . ' ALTER COLUMN "' . strtoupper($column_name) . '" SET DEFAULT ' . ' ' . $column_data['column_type_sql_default']; -				} -				else -				{ -					// TODO: try to change pkey without removing trigger, generator or constraints. ATM this query may fail. -					$statements[] = 'ALTER TABLE ' . $table_name . ' ALTER COLUMN "' . strtoupper($column_name) . '" TYPE ' . ' ' . $column_data['column_type_sql_type']; -				} -			break; -  			case 'mssql':  			case 'mssqlnative':  				// We need the data here diff --git a/phpBB/phpbb/notification/type/base.php b/phpBB/phpbb/notification/type/base.php index c1d4d0e257..910f51b3a6 100644 --- a/phpBB/phpbb/notification/type/base.php +++ b/phpBB/phpbb/notification/type/base.php @@ -308,16 +308,15 @@ abstract class base implements \phpbb\notification\type\type_interface  		return array(  			'NOTIFICATION_ID'	=> $this->notification_id, - +			'STYLING'			=> $this->get_style_class(),  			'AVATAR'			=> $this->get_avatar(), -  			'FORMATTED_TITLE'	=> $this->get_title(), - +			'REFERENCE'			=> $this->get_reference(), +			'FORUM'				=> $this->get_forum(), +			'REASON'			=> $this->get_reason(),  			'URL'				=> $this->get_url(),  			'TIME'	   			=> $this->user->format_date($this->notification_time), -  			'UNREAD'			=> !$this->notification_read, -  			'U_MARK_READ'		=> (!$this->notification_read) ? $u_mark_read : '',  		);  	} @@ -337,6 +336,16 @@ abstract class base implements \phpbb\notification\type\type_interface  	}  	/** +	* Get the CSS style class of the notification (fall back) +	* +	* @return string +	*/ +	public function get_style_class() +	{ +		return ''; +	} + +	/**  	* Get the user's avatar (fall back)  	*  	* @return string @@ -347,6 +356,36 @@ abstract class base implements \phpbb\notification\type\type_interface  	}  	/** +	* Get the reference of the notifcation (fall back) +	* +	* @return string +	*/ +	public function get_reference() +	{ +		return ''; +	} + +	/** +	* Get the forum of the notification reference (fall back) +	* +	* @return string +	*/ +	public function get_forum() +	{ +		return ''; +	} + +	/** +	* Get the reason for the notifcation (fall back) +	* +	* @return string +	*/ +	public function get_reason() +	{ +		return ''; +	} + +	/**  	* Get the special items to load (fall back)  	*  	* @return array diff --git a/phpBB/phpbb/notification/type/disapprove_post.php b/phpBB/phpbb/notification/type/disapprove_post.php index b5f94f404f..7b18ed70ea 100644 --- a/phpBB/phpbb/notification/type/disapprove_post.php +++ b/phpBB/phpbb/notification/type/disapprove_post.php @@ -31,6 +31,16 @@ class disapprove_post extends \phpbb\notification\type\approve_post  	}  	/** +	* Get the CSS style class of the notification +	* +	* @return string +	*/ +	public function get_style_class() +	{ +		return 'notification-disapproved'; +	} + +	/**  	* Language key used to output the text  	*  	* @var string @@ -63,9 +73,31 @@ class disapprove_post extends \phpbb\notification\type\approve_post  	*/  	public function get_title()  	{ +		return $this->user->lang($this->language_key); +	} + +	/** +	* Get the HTML formatted reference of the notification +	* +	* @return string +	*/ +	public function get_reference() +	{ +		return $this->user->lang( +			'NOTIFICATION_REFERENCE', +			censor_text($this->get_data('topic_title')) +		); +	} + +	/** +	* Get the reason for the disapproval notification +	* +	* @return string +	*/ +	public function get_reason() +	{  		return $this->user->lang( -			$this->language_key, -			censor_text($this->get_data('topic_title')), +			'NOTIFICATION_REASON',  			$this->get_data('disapprove_reason')  		);  	} diff --git a/phpBB/phpbb/notification/type/disapprove_topic.php b/phpBB/phpbb/notification/type/disapprove_topic.php index 8883c53294..3f87741807 100644 --- a/phpBB/phpbb/notification/type/disapprove_topic.php +++ b/phpBB/phpbb/notification/type/disapprove_topic.php @@ -31,6 +31,16 @@ class disapprove_topic extends \phpbb\notification\type\approve_topic  	}  	/** +	* Get the CSS style class of the notification +	* +	* @return string +	*/ +	public function get_style_class() +	{ +		return 'notification-disapproved'; +	} + +	/**  	* Language key used to output the text  	*  	* @var string @@ -63,9 +73,31 @@ class disapprove_topic extends \phpbb\notification\type\approve_topic  	*/  	public function get_title()  	{ +		return $this->user->lang($this->language_key); +	} + +	/** +	* Get the HTML formatted reference of the notification +	* +	* @return string +	*/ +	public function get_reference() +	{ +		return $this->user->lang( +			'NOTIFICATION_REFERENCE', +			censor_text($this->get_data('topic_title')) +		); +	} + +	/** +	* Get the reason for the disapproval notification +	* +	* @return string +	*/ +	public function get_reason() +	{  		return $this->user->lang( -			$this->language_key, -			censor_text($this->get_data('topic_title')), +			'NOTIFICATION_REASON',  			$this->get_data('disapprove_reason')  		);  	} diff --git a/phpBB/phpbb/notification/type/pm.php b/phpBB/phpbb/notification/type/pm.php index 955d121cc6..4f54e93e06 100644 --- a/phpBB/phpbb/notification/type/pm.php +++ b/phpBB/phpbb/notification/type/pm.php @@ -111,7 +111,20 @@ class pm extends \phpbb\notification\type\base  	{  		$username = $this->user_loader->get_username($this->get_data('from_user_id'), 'no_profile'); -		return $this->user->lang('NOTIFICATION_PM', $username, $this->get_data('message_subject')); +		return $this->user->lang('NOTIFICATION_PM', $username); +	} + +	/** +	* Get the HTML formatted reference of the notification +	* +	* @return string +	*/ +	public function get_reference() +	{ +		return $this->user->lang( +			'NOTIFICATION_REFERENCE', +			$this->get_data('message_subject') +		);  	}  	/** diff --git a/phpBB/phpbb/notification/type/post.php b/phpBB/phpbb/notification/type/post.php index c8760f904e..ee3a253e0f 100644 --- a/phpBB/phpbb/notification/type/post.php +++ b/phpBB/phpbb/notification/type/post.php @@ -225,12 +225,24 @@ class post extends \phpbb\notification\type\base  		return $this->user->lang(  			$this->language_key,  			phpbb_generate_string_list($usernames, $this->user), -			censor_text($this->get_data('topic_title')),  			$responders_cnt  		);  	}  	/** +	* Get the HTML formatted reference of the notification +	* +	* @return string +	*/ +	public function get_reference() +	{ +		return $this->user->lang( +			'NOTIFICATION_REFERENCE', +			censor_text($this->get_data('topic_title')) +		); +	} + +	/**  	* Get email template  	*  	* @return string|bool diff --git a/phpBB/phpbb/notification/type/report_pm.php b/phpBB/phpbb/notification/type/report_pm.php index 03e89dd28e..2eb802eb4b 100644 --- a/phpBB/phpbb/notification/type/report_pm.php +++ b/phpBB/phpbb/notification/type/report_pm.php @@ -31,6 +31,16 @@ class report_pm extends \phpbb\notification\type\pm  	}  	/** +	* Get the CSS style class of the notification +	* +	* @return string +	*/ +	public function get_style_class() +	{ +		return 'notification-reported'; +	} + +	/**  	* Language key used to output the text  	*  	* @var string @@ -159,12 +169,36 @@ class report_pm extends \phpbb\notification\type\pm  		$username = $this->user_loader->get_username($this->get_data('reporter_id'), 'no_profile'); +		return $this->user->lang( +			$this->language_key, +			$username +		); +	} + +	/** +	* Get the HTML formatted reference of the notification +	* +	* @return string +	*/ +	public function get_reference() +	{ +		return $this->user->lang( +			'NOTIFICATION_REFERENCE', +			censor_text($this->get_data('message_subject')) +		); +	} + +	/** +	* Get the reason for the notification +	* +	* @return string +	*/ +	public function get_reason() +	{  		if ($this->get_data('report_text'))  		{  			return $this->user->lang( -				$this->language_key, -				$username, -				censor_text($this->get_data('message_subject')), +				'NOTIFICATION_REASON',  				$this->get_data('report_text')  			);  		} @@ -172,17 +206,13 @@ class report_pm extends \phpbb\notification\type\pm  		if (isset($this->user->lang[$this->get_data('reason_title')]))  		{  			return $this->user->lang( -				$this->language_key, -				$username, -				censor_text($this->get_data('message_subject')), +				'NOTIFICATION_REASON',  				$this->user->lang[$this->get_data('reason_title')]  			);  		}  		return $this->user->lang( -			$this->language_key, -			$username, -			censor_text($this->get_data('message_subject')), +			'NOTIFICATION_REASON',  			$this->get_data('reason_description')  		);  	} diff --git a/phpBB/phpbb/notification/type/report_pm_closed.php b/phpBB/phpbb/notification/type/report_pm_closed.php index a646996f75..ed40df67f3 100644 --- a/phpBB/phpbb/notification/type/report_pm_closed.php +++ b/phpBB/phpbb/notification/type/report_pm_closed.php @@ -107,7 +107,19 @@ class report_pm_closed extends \phpbb\notification\type\pm  		return $this->user->lang(  			$this->language_key, -			$username, +			$username +		); +	} + +	/** +	* Get the HTML formatted reference of the notification +	* +	* @return string +	*/ +	public function get_reference() +	{ +		return $this->user->lang( +			'NOTIFICATION_REFERENCE',  			censor_text($this->get_data('message_subject'))  		);  	} diff --git a/phpBB/phpbb/notification/type/report_post.php b/phpBB/phpbb/notification/type/report_post.php index d5589a6756..024c8d9d42 100644 --- a/phpBB/phpbb/notification/type/report_post.php +++ b/phpBB/phpbb/notification/type/report_post.php @@ -30,6 +30,16 @@ class report_post extends \phpbb\notification\type\post_in_queue  	}  	/** +	* Get the CSS style class of the notification +	* +	* @return string +	*/ +	public function get_style_class() +	{ +		return 'notification-reported'; +	} + +	/**  	* Language key used to output the text  	*  	* @var string @@ -132,12 +142,36 @@ class report_post extends \phpbb\notification\type\post_in_queue  		$username = $this->user_loader->get_username($this->get_data('reporter_id'), 'no_profile'); +		return $this->user->lang( +			$this->language_key, +			$username +		); +	} + +	/** +	* Get the HTML formatted reference of the notification +	* +	* @return string +	*/ +	public function get_reference() +	{ +		return $this->user->lang( +			'NOTIFICATION_REFERENCE', +			censor_text($this->get_data('post_subject')) +		); +	} + +	/** +	* Get the reason for the notification +	* +	* @return string +	*/ +	public function get_reason() +	{  		if ($this->get_data('report_text'))  		{  			return $this->user->lang( -				$this->language_key, -				$username, -				censor_text($this->get_data('post_subject')), +				'NOTIFICATION_REASON',  				$this->get_data('report_text')  			);  		} @@ -145,17 +179,13 @@ class report_post extends \phpbb\notification\type\post_in_queue  		if (isset($this->user->lang[$this->get_data('reason_title')]))  		{  			return $this->user->lang( -				$this->language_key, -				$username, -				censor_text($this->get_data('post_subject')), +				'NOTIFICATION_REASON',  				$this->user->lang[$this->get_data('reason_title')]  			);  		}  		return $this->user->lang( -			$this->language_key, -			$username, -			censor_text($this->get_data('post_subject')), +			'NOTIFICATION_REASON',  			$this->get_data('reason_description')  		);  	} diff --git a/phpBB/phpbb/notification/type/report_post_closed.php b/phpBB/phpbb/notification/type/report_post_closed.php index e76fa57036..a979af1fb0 100644 --- a/phpBB/phpbb/notification/type/report_post_closed.php +++ b/phpBB/phpbb/notification/type/report_post_closed.php @@ -114,7 +114,19 @@ class report_post_closed extends \phpbb\notification\type\post  		return $this->user->lang(  			$this->language_key, -			$username, +			$username +		); +	} + +	/** +	* Get the HTML formatted reference of the notification +	* +	* @return string +	*/ +	public function get_reference() +	{ +		return $this->user->lang( +			'NOTIFICATION_REFERENCE',  			censor_text($this->get_data('post_subject'))  		);  	} diff --git a/phpBB/phpbb/notification/type/topic.php b/phpBB/phpbb/notification/type/topic.php index 144c4e58a0..a512a12f20 100644 --- a/phpBB/phpbb/notification/type/topic.php +++ b/phpBB/phpbb/notification/type/topic.php @@ -151,8 +151,32 @@ class topic extends \phpbb\notification\type\base  		return $this->user->lang(  			$this->language_key, -			$username, -			censor_text($this->get_data('topic_title')), +			$username +		); +	} + +	/** +	* Get the HTML formatted reference of the notification +	* +	* @return string +	*/ +	public function get_reference() +	{ +		return $this->user->lang( +			'NOTIFICATION_REFERENCE', +			censor_text($this->get_data('topic_title')) +		); +	} + +	/** +	* Get the forum of the notification reference +	* +	* @return string +	*/ +	public function get_forum() +	{ +		return $this->user->lang( +			'NOTIFICATION_FORUM',  			$this->get_data('forum_name')  		);  	} diff --git a/phpBB/phpbb/notification/type/type_interface.php b/phpBB/phpbb/notification/type/type_interface.php index c91c7078ad..5c5a110836 100644 --- a/phpBB/phpbb/notification/type/type_interface.php +++ b/phpBB/phpbb/notification/type/type_interface.php @@ -88,6 +88,13 @@ interface type_interface  	public function load_special($data, $notifications);  	/** +	* Get the CSS style class of the notification +	* +	* @return string +	*/ +	public function get_style_class(); + +	/**  	* Get the HTML formatted title of this notification  	*  	* @return string @@ -95,6 +102,20 @@ interface type_interface  	public function get_title();  	/** +	* Get the HTML formatted reference of the notification +	* +	* @return string +	*/ +	public function get_reference(); + +	/** +	* Get the forum of the notification reference +	* +	* @return string +	*/ +	public function get_forum(); + +	/**  	* Get the url to this item  	*  	* @return string URL diff --git a/phpBB/phpbb/search/fulltext_native.php b/phpBB/phpbb/search/fulltext_native.php index f7b1751a51..2fbff57990 100644 --- a/phpBB/phpbb/search/fulltext_native.php +++ b/phpBB/phpbb/search/fulltext_native.php @@ -1485,7 +1485,6 @@ class fulltext_native extends \phpbb\search\base  		{  			case 'sqlite':  			case 'sqlite3': -			case 'firebird':  				$this->db->sql_query('DELETE FROM ' . SEARCH_WORDLIST_TABLE);  				$this->db->sql_query('DELETE FROM ' . SEARCH_WORDMATCH_TABLE);  				$this->db->sql_query('DELETE FROM ' . SEARCH_RESULTS_TABLE);  | 
