diff options
Diffstat (limited to 'phpBB/phpbb')
| -rw-r--r-- | phpBB/phpbb/search/fulltext_mysql.php | 57 | ||||
| -rw-r--r-- | phpBB/phpbb/search/fulltext_native.php | 35 | ||||
| -rw-r--r-- | phpBB/phpbb/search/fulltext_postgres.php | 54 | 
3 files changed, 129 insertions, 17 deletions
| diff --git a/phpBB/phpbb/search/fulltext_mysql.php b/phpBB/phpbb/search/fulltext_mysql.php index cc8180ec69..137ed7433d 100644 --- a/phpBB/phpbb/search/fulltext_mysql.php +++ b/phpBB/phpbb/search/fulltext_mysql.php @@ -1025,17 +1025,37 @@ class fulltext_mysql extends \phpbb\search\base  			$alter_list[] = $alter_entry;  		} -		if (count($alter_list)) +		$sql_queries = []; + +		foreach ($alter_list as $alter)  		{ -			foreach ($alter_list as $alter) -			{ -				$this->db->sql_query('ALTER TABLE ' . POSTS_TABLE . ' ' . implode(', ', $alter)); -			} +			$sql_queries[] = 'ALTER TABLE ' . POSTS_TABLE . ' ' . implode(', ', $alter);  		}  		if (!isset($this->stats['post_text']))  		{ -			$this->db->sql_query('ALTER TABLE ' . POSTS_TABLE . ' ADD FULLTEXT post_text (post_text)'); +			$sql_queries[] = 'ALTER TABLE ' . POSTS_TABLE . ' ADD FULLTEXT post_text (post_text)'; +		} + +		$stats = $this->stats; + +		/** +		* Event to modify SQL queries before the MySQL search index is created +		* +		* @event core.search_mysql_create_index_before +		* @var array	sql_queries			Array with queries for creating the search index +		* @var array	stats				Array with statistics of the current index (read only) +		* @since 3.2.3-RC1 +		*/ +		$vars = array( +			'sql_queries', +			'stats', +		); +		extract($this->phpbb_dispatcher->trigger_event('core.search_mysql_create_index_before', compact($vars))); + +		foreach ($sql_queries as $sql_query) +		{ +			$this->db->sql_query($sql_query);  		}  		$this->db->sql_query('TRUNCATE TABLE ' . SEARCH_RESULTS_TABLE); @@ -1078,9 +1098,32 @@ class fulltext_mysql extends \phpbb\search\base  			$alter[] = 'DROP INDEX post_text';  		} +		$sql_queries = []; +  		if (count($alter))  		{ -			$this->db->sql_query('ALTER TABLE ' . POSTS_TABLE . ' ' . implode(', ', $alter)); +			$sql_queries[] = 'ALTER TABLE ' . POSTS_TABLE . ' ' . implode(', ', $alter); +		} + +		$stats = $this->stats; + +		/** +		* Event to modify SQL queries before the MySQL search index is deleted +		* +		* @event core.search_mysql_delete_index_before +		* @var array	sql_queries			Array with queries for deleting the search index +		* @var array	stats				Array with statistics of the current index (read only) +		* @since 3.2.3-RC1 +		*/ +		$vars = array( +			'sql_queries', +			'stats', +		); +		extract($this->phpbb_dispatcher->trigger_event('core.search_mysql_delete_index_before', compact($vars))); + +		foreach ($sql_queries as $sql_query) +		{ +			$this->db->sql_query($sql_query);  		}  		$this->db->sql_query('TRUNCATE TABLE ' . SEARCH_RESULTS_TABLE); diff --git a/phpBB/phpbb/search/fulltext_native.php b/phpBB/phpbb/search/fulltext_native.php index eb972a257a..4172e2cc4f 100644 --- a/phpBB/phpbb/search/fulltext_native.php +++ b/phpBB/phpbb/search/fulltext_native.php @@ -1696,20 +1696,43 @@ class fulltext_native extends \phpbb\search\base  	*/  	public function delete_index($acp_module, $u_action)  	{ +		$sql_queries = []; +  		switch ($this->db->get_sql_layer())  		{  			case 'sqlite3': -				$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); +				$sql_queries[] = 'DELETE FROM ' . SEARCH_WORDLIST_TABLE; +				$sql_queries[] = 'DELETE FROM ' . SEARCH_WORDMATCH_TABLE; +				$sql_queries[] = 'DELETE FROM ' . SEARCH_RESULTS_TABLE;  			break;  			default: -				$this->db->sql_query('TRUNCATE TABLE ' . SEARCH_WORDLIST_TABLE); -				$this->db->sql_query('TRUNCATE TABLE ' . SEARCH_WORDMATCH_TABLE); -				$this->db->sql_query('TRUNCATE TABLE ' . SEARCH_RESULTS_TABLE); +				$sql_queries[] = 'TRUNCATE TABLE ' . SEARCH_WORDLIST_TABLE; +				$sql_queries[] = 'TRUNCATE TABLE ' . SEARCH_WORDMATCH_TABLE; +				$sql_queries[] = 'TRUNCATE TABLE ' . SEARCH_RESULTS_TABLE;  			break;  		} + +		$stats = $this->stats; + +		/** +		* Event to modify SQL queries before the native search index is deleted +		* +		* @event core.search_native_delete_index_before +		* @var array	sql_queries			Array with queries for deleting the search index +		* @var array	stats				Array with statistics of the current index (read only) +		* @since 3.2.3-RC1 +		*/ +		$vars = array( +			'sql_queries', +			'stats', +		); +		extract($this->phpbb_dispatcher->trigger_event('core.search_native_delete_index_before', compact($vars))); + +		foreach ($sql_queries as $sql_query) +		{ +			$this->db->sql_query($sql_query); +		}  	}  	/** diff --git a/phpBB/phpbb/search/fulltext_postgres.php b/phpBB/phpbb/search/fulltext_postgres.php index ac76f2f87a..2f387e791e 100644 --- a/phpBB/phpbb/search/fulltext_postgres.php +++ b/phpBB/phpbb/search/fulltext_postgres.php @@ -963,14 +963,37 @@ class fulltext_postgres extends \phpbb\search\base  			$this->get_stats();  		} +		$sql_queries = []; +  		if (!isset($this->stats['post_subject']))  		{ -			$this->db->sql_query("CREATE INDEX " . POSTS_TABLE . "_" . $this->config['fulltext_postgres_ts_name'] . "_post_subject ON " . POSTS_TABLE . " USING gin (to_tsvector ('" . $this->db->sql_escape($this->config['fulltext_postgres_ts_name']) . "', post_subject))"); +			$sql_queries[] = "CREATE INDEX " . POSTS_TABLE . "_" . $this->config['fulltext_postgres_ts_name'] . "_post_subject ON " . POSTS_TABLE . " USING gin (to_tsvector ('" . $this->db->sql_escape($this->config['fulltext_postgres_ts_name']) . "', post_subject))";  		}  		if (!isset($this->stats['post_content']))  		{ -			$this->db->sql_query("CREATE INDEX " . POSTS_TABLE . "_" . $this->config['fulltext_postgres_ts_name'] . "_post_content ON " . POSTS_TABLE . " USING gin (to_tsvector ('" . $this->db->sql_escape($this->config['fulltext_postgres_ts_name']) . "', post_text || ' ' || post_subject))"); +			$sql_queries[] = "CREATE INDEX " . POSTS_TABLE . "_" . $this->config['fulltext_postgres_ts_name'] . "_post_content ON " . POSTS_TABLE . " USING gin (to_tsvector ('" . $this->db->sql_escape($this->config['fulltext_postgres_ts_name']) . "', post_text || ' ' || post_subject))"; +		} + +		$stats = $this->stats; + +		/** +		* Event to modify SQL queries before the Postgres search index is created +		* +		* @event core.search_postgres_create_index_before +		* @var array	sql_queries			Array with queries for creating the search index +		* @var array	stats				Array with statistics of the current index (read only) +		* @since 3.2.3-RC1 +		*/ +		$vars = array( +			'sql_queries', +			'stats', +		); +		extract($this->phpbb_dispatcher->trigger_event('core.search_postgres_create_index_before', compact($vars))); + +		foreach ($sql_queries as $sql_query) +		{ +			$this->db->sql_query($sql_query);  		}  		$this->db->sql_query('TRUNCATE TABLE ' . SEARCH_RESULTS_TABLE); @@ -996,14 +1019,37 @@ class fulltext_postgres extends \phpbb\search\base  			$this->get_stats();  		} +		$sql_queries = []; +  		if (isset($this->stats['post_subject']))  		{ -			$this->db->sql_query('DROP INDEX ' . $this->stats['post_subject']['relname']); +			$sql_queries[] = 'DROP INDEX ' . $this->stats['post_subject']['relname'];  		}  		if (isset($this->stats['post_content']))  		{ -			$this->db->sql_query('DROP INDEX ' . $this->stats['post_content']['relname']); +			$sql_queries[] = 'DROP INDEX ' . $this->stats['post_content']['relname']; +		} + +		$stats = $this->stats; + +		/** +		* Event to modify SQL queries before the Postgres search index is created +		* +		* @event core.search_postgres_delete_index_before +		* @var array	sql_queries			Array with queries for deleting the search index +		* @var array	stats				Array with statistics of the current index (read only) +		* @since 3.2.3-RC1 +		*/ +		$vars = array( +			'sql_queries', +			'stats', +		); +		extract($this->phpbb_dispatcher->trigger_event('core.search_postgres_delete_index_before', compact($vars))); + +		foreach ($sql_queries as $sql_query) +		{ +			$this->db->sql_query($sql_query);  		}  		$this->db->sql_query('TRUNCATE TABLE ' . SEARCH_RESULTS_TABLE); | 
