phpBB

Code Changes

File: phpbb/search/fulltext_mysql.php

  Unmodified   Added   Modified   Removed
Line 272Line 272

foreach ($this->split_words as $i => $word)
{


foreach ($this->split_words as $i => $word)
{

 
			// Check for not allowed search queries for InnoDB.
// We assume similar restrictions for MyISAM, which is usually even
// slower but not as restrictive as InnoDB.
// InnoDB full-text search does not support the use of a leading
// plus sign with wildcard ('+*'), a plus and minus sign
// combination ('+-'), or leading a plus and minus sign combination.
// InnoDB full-text search only supports leading plus or minus signs.
// For example, InnoDB supports '+apple' but does not support 'apple+'.
// Specifying a trailing plus or minus sign causes InnoDB to report
// a syntax error. InnoDB full-text search does not support the use
// of multiple operators on a single search word, as in this example:
// '++apple'. Use of multiple operators on a single search word
// returns a syntax error to standard out.
// Also, ensure that the wildcard character is only used at the
// end of the line as it's intended by MySQL.
if (preg_match('#^(\+[+-]|\+\*|.+[+-]$|.+\*(?!$))#', $word))
{
unset($this->split_words[$i]);
continue;
}


			$clean_word = preg_replace('#^[+\-|"]#', '', $word);

// check word length

			$clean_word = preg_replace('#^[+\-|"]#', '', $word);

// check word length

Line 942Line 963
			$this->get_stats();
}


			$this->get_stats();
}


		$alter = array();

		$alter_list = array();


if (!isset($this->stats['post_subject']))
{


if (!isset($this->stats['post_subject']))
{

 
			$alter_entry = array();

			if ($this->db->get_sql_layer() == 'mysqli' || version_compare($this->db->sql_server_info(true), '4.1.3', '>='))
{

			if ($this->db->get_sql_layer() == 'mysqli' || version_compare($this->db->sql_server_info(true), '4.1.3', '>='))
{

				$alter[] = 'MODIFY post_subject varchar(255) COLLATE utf8_unicode_ci DEFAULT \'\' NOT NULL';

				$alter_entry[] = 'MODIFY post_subject varchar(255) COLLATE utf8_unicode_ci DEFAULT \'\' NOT NULL';

			}
else
{

			}
else
{

				$alter[] = 'MODIFY post_subject text NOT NULL';

				$alter_entry[] = 'MODIFY post_subject text NOT NULL';

			}

			}

			$alter[] = 'ADD FULLTEXT (post_subject)';


			$alter_entry[] = 'ADD FULLTEXT (post_subject)';
$alter_list[] = $alter_entry;

		}

if (!isset($this->stats['post_content']))
{

		}

if (!isset($this->stats['post_content']))
{

 
			$alter_entry = array();

			if ($this->db->get_sql_layer() == 'mysqli' || version_compare($this->db->sql_server_info(true), '4.1.3', '>='))
{

			if ($this->db->get_sql_layer() == 'mysqli' || version_compare($this->db->sql_server_info(true), '4.1.3', '>='))
{

				$alter[] = 'MODIFY post_text mediumtext COLLATE utf8_unicode_ci NOT NULL';

				$alter_entry[] = 'MODIFY post_text mediumtext COLLATE utf8_unicode_ci NOT NULL';

			}
else
{

			}
else
{

				$alter[] = 'MODIFY post_text mediumtext NOT NULL';

				$alter_entry[] = 'MODIFY post_text mediumtext NOT NULL';

			}


			}


			$alter[] = 'ADD FULLTEXT post_content (post_text, post_subject)';


			$alter_entry[] = 'ADD FULLTEXT post_content (post_text, post_subject)';
$alter_list[] = $alter_entry;

		}


		}


		if (sizeof($alter))



		if (sizeof($alter_list))
{
foreach ($alter_list as $alter)

		{
$this->db->sql_query('ALTER TABLE ' . POSTS_TABLE . ' ' . implode(', ', $alter));

		{
$this->db->sql_query('ALTER TABLE ' . POSTS_TABLE . ' ' . implode(', ', $alter));

 
			}

		}

$this->db->sql_query('TRUNCATE TABLE ' . SEARCH_RESULTS_TABLE);

		}

$this->db->sql_query('TRUNCATE TABLE ' . SEARCH_RESULTS_TABLE);