mirror of
https://github.com/phpbb/phpbb.git
synced 2025-05-07 08:05:25 +02:00
Merge branch '3.1.x'
* 3.1.x: [ticket/14098] Add core events to the search backends
This commit is contained in:
commit
a5ab2eb564
@ -379,7 +379,7 @@ class fulltext_mysql extends \phpbb\search\base
|
|||||||
}
|
}
|
||||||
|
|
||||||
// generate a search_key from all the options to identify the results
|
// generate a search_key from all the options to identify the results
|
||||||
$search_key = md5(implode('#', array(
|
$search_key_array = array(
|
||||||
implode(', ', $this->split_words),
|
implode(', ', $this->split_words),
|
||||||
$type,
|
$type,
|
||||||
$fields,
|
$fields,
|
||||||
@ -390,7 +390,39 @@ class fulltext_mysql extends \phpbb\search\base
|
|||||||
implode(',', $ex_fid_ary),
|
implode(',', $ex_fid_ary),
|
||||||
$post_visibility,
|
$post_visibility,
|
||||||
implode(',', $author_ary)
|
implode(',', $author_ary)
|
||||||
)));
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow changing the search_key for cached results
|
||||||
|
*
|
||||||
|
* @event core.search_mysql_by_keyword_modify_search_key
|
||||||
|
* @var array search_key_array Array with search parameters to generate the search_key
|
||||||
|
* @var string type Searching type ('posts', 'topics')
|
||||||
|
* @var string fields Searching fields ('titleonly', 'msgonly', 'firstpost', 'all')
|
||||||
|
* @var string terms Searching terms ('all', 'any')
|
||||||
|
* @var int sort_days Time, in days, of the oldest possible post to list
|
||||||
|
* @var string sort_key The sort type used from the possible sort types
|
||||||
|
* @var int topic_id Limit the search to this topic_id only
|
||||||
|
* @var array ex_fid_ary Which forums not to search on
|
||||||
|
* @var string post_visibility Post visibility data
|
||||||
|
* @var array author_ary Array of user_id containing the users to filter the results to
|
||||||
|
* @since 3.1.7-RC1
|
||||||
|
*/
|
||||||
|
$vars = array(
|
||||||
|
'search_key_array',
|
||||||
|
'type',
|
||||||
|
'fields',
|
||||||
|
'terms',
|
||||||
|
'sort_days',
|
||||||
|
'sort_key',
|
||||||
|
'topic_id',
|
||||||
|
'ex_fid_ary',
|
||||||
|
'post_visibility',
|
||||||
|
'author_ary',
|
||||||
|
);
|
||||||
|
extract($this->phpbb_dispatcher->trigger_event('core.search_mysql_by_keyword_modify_search_key', compact($vars)));
|
||||||
|
|
||||||
|
$search_key = md5(implode('#', $search_key_array));
|
||||||
|
|
||||||
if ($start < 0)
|
if ($start < 0)
|
||||||
{
|
{
|
||||||
@ -610,7 +642,7 @@ class fulltext_mysql extends \phpbb\search\base
|
|||||||
}
|
}
|
||||||
|
|
||||||
// generate a search_key from all the options to identify the results
|
// generate a search_key from all the options to identify the results
|
||||||
$search_key = md5(implode('#', array(
|
$search_key_array = array(
|
||||||
'',
|
'',
|
||||||
$type,
|
$type,
|
||||||
($firstpost_only) ? 'firstpost' : '',
|
($firstpost_only) ? 'firstpost' : '',
|
||||||
@ -623,7 +655,39 @@ class fulltext_mysql extends \phpbb\search\base
|
|||||||
$post_visibility,
|
$post_visibility,
|
||||||
implode(',', $author_ary),
|
implode(',', $author_ary),
|
||||||
$author_name,
|
$author_name,
|
||||||
)));
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow changing the search_key for cached results
|
||||||
|
*
|
||||||
|
* @event core.search_mysql_by_author_modify_search_key
|
||||||
|
* @var array search_key_array Array with search parameters to generate the search_key
|
||||||
|
* @var string type Searching type ('posts', 'topics')
|
||||||
|
* @var boolean firstpost_only Flag indicating if only topic starting posts are considered
|
||||||
|
* @var int sort_days Time, in days, of the oldest possible post to list
|
||||||
|
* @var string sort_key The sort type used from the possible sort types
|
||||||
|
* @var int topic_id Limit the search to this topic_id only
|
||||||
|
* @var array ex_fid_ary Which forums not to search on
|
||||||
|
* @var string post_visibility Post visibility data
|
||||||
|
* @var array author_ary Array of user_id containing the users to filter the results to
|
||||||
|
* @var string author_name The username to search on
|
||||||
|
* @since 3.1.7-RC1
|
||||||
|
*/
|
||||||
|
$vars = array(
|
||||||
|
'search_key_array',
|
||||||
|
'type',
|
||||||
|
'firstpost_only',
|
||||||
|
'sort_days',
|
||||||
|
'sort_key',
|
||||||
|
'topic_id',
|
||||||
|
'ex_fid_ary',
|
||||||
|
'post_visibility',
|
||||||
|
'author_ary',
|
||||||
|
'author_name',
|
||||||
|
);
|
||||||
|
extract($this->phpbb_dispatcher->trigger_event('core.search_mysql_by_author_modify_search_key', compact($vars)));
|
||||||
|
|
||||||
|
$search_key = md5(implode('#', $search_key_array));
|
||||||
|
|
||||||
if ($start < 0)
|
if ($start < 0)
|
||||||
{
|
{
|
||||||
|
@ -64,7 +64,7 @@ class fulltext_native extends \phpbb\search\base
|
|||||||
protected $must_not_contain_ids = array();
|
protected $must_not_contain_ids = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Post ids of posts containing atleast one word that needs to be excluded
|
* Post ids of posts containing at least one word that needs to be excluded
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $must_exclude_one_ids = array();
|
protected $must_exclude_one_ids = array();
|
||||||
@ -533,7 +533,7 @@ class fulltext_native extends \phpbb\search\base
|
|||||||
sort($must_exclude_one_ids);
|
sort($must_exclude_one_ids);
|
||||||
|
|
||||||
// generate a search_key from all the options to identify the results
|
// generate a search_key from all the options to identify the results
|
||||||
$search_key = md5(implode('#', array(
|
$search_key_array = array(
|
||||||
serialize($must_contain_ids),
|
serialize($must_contain_ids),
|
||||||
serialize($must_not_contain_ids),
|
serialize($must_not_contain_ids),
|
||||||
serialize($must_exclude_one_ids),
|
serialize($must_exclude_one_ids),
|
||||||
@ -547,7 +547,45 @@ class fulltext_native extends \phpbb\search\base
|
|||||||
$post_visibility,
|
$post_visibility,
|
||||||
implode(',', $author_ary),
|
implode(',', $author_ary),
|
||||||
$author_name,
|
$author_name,
|
||||||
)));
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow changing the search_key for cached results
|
||||||
|
*
|
||||||
|
* @event core.search_native_by_keyword_modify_search_key
|
||||||
|
* @var array search_key_array Array with search parameters to generate the search_key
|
||||||
|
* @var array must_contain_ids Array with post ids of posts containing words that are to be included
|
||||||
|
* @var array must_not_contain_ids Array with post ids of posts containing words that should not be included
|
||||||
|
* @var array must_exclude_one_ids Array with post ids of posts containing at least one word that needs to be excluded
|
||||||
|
* @var string type Searching type ('posts', 'topics')
|
||||||
|
* @var string fields Searching fields ('titleonly', 'msgonly', 'firstpost', 'all')
|
||||||
|
* @var string terms Searching terms ('all', 'any')
|
||||||
|
* @var int sort_days Time, in days, of the oldest possible post to list
|
||||||
|
* @var string sort_key The sort type used from the possible sort types
|
||||||
|
* @var int topic_id Limit the search to this topic_id only
|
||||||
|
* @var array ex_fid_ary Which forums not to search on
|
||||||
|
* @var string post_visibility Post visibility data
|
||||||
|
* @var array author_ary Array of user_id containing the users to filter the results to
|
||||||
|
* @since 3.1.7-RC1
|
||||||
|
*/
|
||||||
|
$vars = array(
|
||||||
|
'search_key_array',
|
||||||
|
'must_contain_ids',
|
||||||
|
'must_not_contain_ids',
|
||||||
|
'must_exclude_one_ids',
|
||||||
|
'type',
|
||||||
|
'fields',
|
||||||
|
'terms',
|
||||||
|
'sort_days',
|
||||||
|
'sort_key',
|
||||||
|
'topic_id',
|
||||||
|
'ex_fid_ary',
|
||||||
|
'post_visibility',
|
||||||
|
'author_ary',
|
||||||
|
);
|
||||||
|
extract($this->phpbb_dispatcher->trigger_event('core.search_native_by_keyword_modify_search_key', compact($vars)));
|
||||||
|
|
||||||
|
$search_key = md5(implode('#', $search_key_array));
|
||||||
|
|
||||||
// try reading the results from cache
|
// try reading the results from cache
|
||||||
$total_results = 0;
|
$total_results = 0;
|
||||||
@ -983,7 +1021,7 @@ class fulltext_native extends \phpbb\search\base
|
|||||||
}
|
}
|
||||||
|
|
||||||
// generate a search_key from all the options to identify the results
|
// generate a search_key from all the options to identify the results
|
||||||
$search_key = md5(implode('#', array(
|
$search_key_array = array(
|
||||||
'',
|
'',
|
||||||
$type,
|
$type,
|
||||||
($firstpost_only) ? 'firstpost' : '',
|
($firstpost_only) ? 'firstpost' : '',
|
||||||
@ -996,7 +1034,39 @@ class fulltext_native extends \phpbb\search\base
|
|||||||
$post_visibility,
|
$post_visibility,
|
||||||
implode(',', $author_ary),
|
implode(',', $author_ary),
|
||||||
$author_name,
|
$author_name,
|
||||||
)));
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow changing the search_key for cached results
|
||||||
|
*
|
||||||
|
* @event core.search_native_by_author_modify_search_key
|
||||||
|
* @var array search_key_array Array with search parameters to generate the search_key
|
||||||
|
* @var string type Searching type ('posts', 'topics')
|
||||||
|
* @var boolean firstpost_only Flag indicating if only topic starting posts are considered
|
||||||
|
* @var int sort_days Time, in days, of the oldest possible post to list
|
||||||
|
* @var string sort_key The sort type used from the possible sort types
|
||||||
|
* @var int topic_id Limit the search to this topic_id only
|
||||||
|
* @var array ex_fid_ary Which forums not to search on
|
||||||
|
* @var string post_visibility Post visibility data
|
||||||
|
* @var array author_ary Array of user_id containing the users to filter the results to
|
||||||
|
* @var string author_name The username to search on
|
||||||
|
* @since 3.1.7-RC1
|
||||||
|
*/
|
||||||
|
$vars = array(
|
||||||
|
'search_key_array',
|
||||||
|
'type',
|
||||||
|
'firstpost_only',
|
||||||
|
'sort_days',
|
||||||
|
'sort_key',
|
||||||
|
'topic_id',
|
||||||
|
'ex_fid_ary',
|
||||||
|
'post_visibility',
|
||||||
|
'author_ary',
|
||||||
|
'author_name',
|
||||||
|
);
|
||||||
|
extract($this->phpbb_dispatcher->trigger_event('core.search_native_by_author_modify_search_key', compact($vars)));
|
||||||
|
|
||||||
|
$search_key = md5(implode('#', $search_key_array));
|
||||||
|
|
||||||
// try reading the results from cache
|
// try reading the results from cache
|
||||||
$total_results = 0;
|
$total_results = 0;
|
||||||
|
@ -341,7 +341,7 @@ class fulltext_postgres extends \phpbb\search\base
|
|||||||
}
|
}
|
||||||
|
|
||||||
// generate a search_key from all the options to identify the results
|
// generate a search_key from all the options to identify the results
|
||||||
$search_key = md5(implode('#', array(
|
$search_key_array = array(
|
||||||
implode(', ', $this->split_words),
|
implode(', ', $this->split_words),
|
||||||
$type,
|
$type,
|
||||||
$fields,
|
$fields,
|
||||||
@ -352,7 +352,39 @@ class fulltext_postgres extends \phpbb\search\base
|
|||||||
implode(',', $ex_fid_ary),
|
implode(',', $ex_fid_ary),
|
||||||
$post_visibility,
|
$post_visibility,
|
||||||
implode(',', $author_ary)
|
implode(',', $author_ary)
|
||||||
)));
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow changing the search_key for cached results
|
||||||
|
*
|
||||||
|
* @event core.search_postgres_by_keyword_modify_search_key
|
||||||
|
* @var array search_key_array Array with search parameters to generate the search_key
|
||||||
|
* @var string type Searching type ('posts', 'topics')
|
||||||
|
* @var string fields Searching fields ('titleonly', 'msgonly', 'firstpost', 'all')
|
||||||
|
* @var string terms Searching terms ('all', 'any')
|
||||||
|
* @var int sort_days Time, in days, of the oldest possible post to list
|
||||||
|
* @var string sort_key The sort type used from the possible sort types
|
||||||
|
* @var int topic_id Limit the search to this topic_id only
|
||||||
|
* @var array ex_fid_ary Which forums not to search on
|
||||||
|
* @var string post_visibility Post visibility data
|
||||||
|
* @var array author_ary Array of user_id containing the users to filter the results to
|
||||||
|
* @since 3.1.7-RC1
|
||||||
|
*/
|
||||||
|
$vars = array(
|
||||||
|
'search_key_array',
|
||||||
|
'type',
|
||||||
|
'fields',
|
||||||
|
'terms',
|
||||||
|
'sort_days',
|
||||||
|
'sort_key',
|
||||||
|
'topic_id',
|
||||||
|
'ex_fid_ary',
|
||||||
|
'post_visibility',
|
||||||
|
'author_ary',
|
||||||
|
);
|
||||||
|
extract($this->phpbb_dispatcher->trigger_event('core.search_postgres_by_keyword_modify_search_key', compact($vars)));
|
||||||
|
|
||||||
|
$search_key = md5(implode('#', $search_key_array));
|
||||||
|
|
||||||
if ($start < 0)
|
if ($start < 0)
|
||||||
{
|
{
|
||||||
@ -585,7 +617,7 @@ class fulltext_postgres extends \phpbb\search\base
|
|||||||
}
|
}
|
||||||
|
|
||||||
// generate a search_key from all the options to identify the results
|
// generate a search_key from all the options to identify the results
|
||||||
$search_key = md5(implode('#', array(
|
$search_key_array = array(
|
||||||
'',
|
'',
|
||||||
$type,
|
$type,
|
||||||
($firstpost_only) ? 'firstpost' : '',
|
($firstpost_only) ? 'firstpost' : '',
|
||||||
@ -598,7 +630,39 @@ class fulltext_postgres extends \phpbb\search\base
|
|||||||
$post_visibility,
|
$post_visibility,
|
||||||
implode(',', $author_ary),
|
implode(',', $author_ary),
|
||||||
$author_name,
|
$author_name,
|
||||||
)));
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow changing the search_key for cached results
|
||||||
|
*
|
||||||
|
* @event core.search_postgres_by_author_modify_search_key
|
||||||
|
* @var array search_key_array Array with search parameters to generate the search_key
|
||||||
|
* @var string type Searching type ('posts', 'topics')
|
||||||
|
* @var boolean firstpost_only Flag indicating if only topic starting posts are considered
|
||||||
|
* @var int sort_days Time, in days, of the oldest possible post to list
|
||||||
|
* @var string sort_key The sort type used from the possible sort types
|
||||||
|
* @var int topic_id Limit the search to this topic_id only
|
||||||
|
* @var array ex_fid_ary Which forums not to search on
|
||||||
|
* @var string post_visibility Post visibility data
|
||||||
|
* @var array author_ary Array of user_id containing the users to filter the results to
|
||||||
|
* @var string author_name The username to search on
|
||||||
|
* @since 3.1.7-RC1
|
||||||
|
*/
|
||||||
|
$vars = array(
|
||||||
|
'search_key_array',
|
||||||
|
'type',
|
||||||
|
'firstpost_only',
|
||||||
|
'sort_days',
|
||||||
|
'sort_key',
|
||||||
|
'topic_id',
|
||||||
|
'ex_fid_ary',
|
||||||
|
'post_visibility',
|
||||||
|
'author_ary',
|
||||||
|
'author_name',
|
||||||
|
);
|
||||||
|
extract($this->phpbb_dispatcher->trigger_event('core.search_postgres_by_author_modify_search_key', compact($vars)));
|
||||||
|
|
||||||
|
$search_key = md5(implode('#', $search_key_array));
|
||||||
|
|
||||||
if ($start < 0)
|
if ($start < 0)
|
||||||
{
|
{
|
||||||
|
@ -359,6 +359,23 @@ class fulltext_sphinx
|
|||||||
|
|
||||||
$non_unique = array('sql_query_pre' => true, 'sql_attr_uint' => true, 'sql_attr_timestamp' => true, 'sql_attr_str2ordinal' => true, 'sql_attr_bool' => true);
|
$non_unique = array('sql_query_pre' => true, 'sql_attr_uint' => true, 'sql_attr_timestamp' => true, 'sql_attr_str2ordinal' => true, 'sql_attr_bool' => true);
|
||||||
$delete = array('sql_group_column' => true, 'sql_date_column' => true, 'sql_str2ordinal_column' => true);
|
$delete = array('sql_group_column' => true, 'sql_date_column' => true, 'sql_str2ordinal_column' => true);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow adding/changing the Sphinx configuration data
|
||||||
|
*
|
||||||
|
* @event core.search_sphinx_modify_config_data
|
||||||
|
* @var array config_data Array with the Sphinx configuration data
|
||||||
|
* @var array non_unique Array with the Sphinx non-unique variables to delete
|
||||||
|
* @var array delete Array with the Sphinx variables to delete
|
||||||
|
* @since 3.1.7-RC1
|
||||||
|
*/
|
||||||
|
$vars = array(
|
||||||
|
'config_data',
|
||||||
|
'non_unique',
|
||||||
|
'delete',
|
||||||
|
);
|
||||||
|
extract($this->phpbb_dispatcher->trigger_event('core.search_sphinx_modify_config_data', compact($vars)));
|
||||||
|
|
||||||
foreach ($config_data as $section_name => $section_data)
|
foreach ($config_data as $section_name => $section_data)
|
||||||
{
|
{
|
||||||
$section = $config_object->get_section_by_name($section_name);
|
$section = $config_object->get_section_by_name($section_name);
|
||||||
@ -534,6 +551,41 @@ class fulltext_sphinx
|
|||||||
$this->sphinx->SetFilter('topic_id', array($topic_id));
|
$this->sphinx->SetFilter('topic_id', array($topic_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow modifying the Sphinx search options
|
||||||
|
*
|
||||||
|
* @event core.search_sphinx_keywords_modify_options
|
||||||
|
* @var string type Searching type ('posts', 'topics')
|
||||||
|
* @var string fields Searching fields ('titleonly', 'msgonly', 'firstpost', 'all')
|
||||||
|
* @var string terms Searching terms ('all', 'any')
|
||||||
|
* @var int sort_days Time, in days, of the oldest possible post to list
|
||||||
|
* @var string sort_key The sort type used from the possible sort types
|
||||||
|
* @var int topic_id Limit the search to this topic_id only
|
||||||
|
* @var array ex_fid_ary Which forums not to search on
|
||||||
|
* @var string post_visibility Post visibility data
|
||||||
|
* @var array author_ary Array of user_id containing the users to filter the results to
|
||||||
|
* @var string author_name The username to search on
|
||||||
|
* @var object sphinx The Sphinx searchd client object
|
||||||
|
* @since 3.1.7-RC1
|
||||||
|
*/
|
||||||
|
$sphinx = $this->sphinx;
|
||||||
|
$vars = array(
|
||||||
|
'type',
|
||||||
|
'fields',
|
||||||
|
'terms',
|
||||||
|
'sort_days',
|
||||||
|
'sort_key',
|
||||||
|
'topic_id',
|
||||||
|
'ex_fid_ary',
|
||||||
|
'post_visibility',
|
||||||
|
'author_ary',
|
||||||
|
'author_name',
|
||||||
|
'sphinx',
|
||||||
|
);
|
||||||
|
extract($this->phpbb_dispatcher->trigger_event('core.search_sphinx_keywords_modify_options', compact($vars)));
|
||||||
|
$this->sphinx = $sphinx;
|
||||||
|
unset($sphinx);
|
||||||
|
|
||||||
$search_query_prefix = '';
|
$search_query_prefix = '';
|
||||||
|
|
||||||
switch ($fields)
|
switch ($fields)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user