Line 57 | Line 57 |
---|
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 */ protected $must_exclude_one_ids = array();
| * @var array */ protected $must_exclude_one_ids = array();
|
Line 530 | Line 530 |
---|
sort($must_exclude_one_ids);
// generate a search_key from all the options to identify the results
|
sort($must_exclude_one_ids);
// 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_not_contain_ids), serialize($must_exclude_one_ids),
| serialize($must_contain_ids), serialize($must_not_contain_ids), serialize($must_exclude_one_ids),
|
Line 544 | Line 544 |
---|
$post_visibility, implode(',', $author_ary), $author_name,
|
$post_visibility, implode(',', $author_ary), $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 $total_results = 0;
| // try reading the results from cache $total_results = 0;
|
Line 733 | Line 771 |
---|
* @var array must_not_contain_ids Ids that cannot be taken into account for the results * @var array must_exclude_one_ids Ids that cannot be on the results * @var array must_contain_ids Ids that must be on the results
|
* @var array must_not_contain_ids Ids that cannot be taken into account for the results * @var array must_exclude_one_ids Ids that cannot be on the results * @var array must_contain_ids Ids that must be on the results
|
* @var int result_count The previous result count for the format of the query
| * @var int total_results The previous result count for the format of the query
|
* Set to 0 to force a re-count
|
* Set to 0 to force a re-count
|
* @var bool join_topic Weather or not TOPICS_TABLE should be CROSS JOIN'ED
| * @var array sql_array The data on how to search in the DB at this point * @var bool left_join_topics Whether or not TOPICS_TABLE should be CROSS JOIN'ED
|
* @var array author_ary Array of user_id containing the users to filter the results to * @var string author_name An extra username to search on (!empty(author_ary) must be true, to be relevant) * @var array ex_fid_ary Which forums not to search on
| * @var array author_ary Array of user_id containing the users to filter the results to * @var string author_name An extra username to search on (!empty(author_ary) must be true, to be relevant) * @var array ex_fid_ary Which forums not to search on
|
Line 748 | Line 787 |
---|
* @var string sql_where An array of the current WHERE clause conditions * @var string sql_match Which columns to do the search on * @var string sql_match_where Extra conditions to use to properly filter the matching process
|
* @var string sql_where An array of the current WHERE clause conditions * @var string sql_match Which columns to do the search on * @var string sql_match_where Extra conditions to use to properly filter the matching process
|
* @var string group_by Whether or not the SQL query requires a GROUP BY for the elements in the SELECT clause
| * @var bool group_by Whether or not the SQL query requires a GROUP BY for the elements in the SELECT clause
|
* @var string sort_by_sql The possible predefined sort types * @var string sort_key The sort type used from the possible sort types * @var string sort_dir "a" for ASC or "d" dor DESC for the sort order used
| * @var string sort_by_sql The possible predefined sort types * @var string sort_key The sort type used from the possible sort types * @var string sort_dir "a" for ASC or "d" dor DESC for the sort order used
|
Line 761 | Line 800 |
---|
'must_not_contain_ids', 'must_exclude_one_ids', 'must_contain_ids',
|
'must_not_contain_ids', 'must_exclude_one_ids', 'must_contain_ids',
|
'result_count', 'join_topic',
| 'total_results', 'sql_array', 'left_join_topics',
|
'author_ary', 'author_name', 'ex_fid_ary',
| 'author_ary', 'author_name', 'ex_fid_ary',
|
Line 978 | Line 1018 |
---|
}
// 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, ($firstpost_only) ? 'firstpost' : '',
| '', $type, ($firstpost_only) ? 'firstpost' : '',
|
Line 991 | Line 1031 |
---|
$post_visibility, implode(',', $author_ary), $author_name,
|
$post_visibility, implode(',', $author_ary), $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 $total_results = 0;
| // try reading the results from cache $total_results = 0;
|
Line 1048 | Line 1120 |
---|
* @event core.search_native_author_count_query_before * @var int total_results The previous result count for the format of the query. * Set to 0 to force a re-count
|
* @event core.search_native_author_count_query_before * @var int total_results The previous result count for the format of the query. * Set to 0 to force a re-count
|
| * @var string type The type of search being made
|
* @var string select SQL SELECT clause for what to get * @var string sql_sort_table CROSS JOIN'ed table to allow doing the sort chosen * @var string sql_sort_join Condition to define how to join the CROSS JOIN'ed table specifyed in sql_sort_table
| * @var string select SQL SELECT clause for what to get * @var string sql_sort_table CROSS JOIN'ed table to allow doing the sort chosen * @var string sql_sort_join Condition to define how to join the CROSS JOIN'ed table specifyed in sql_sort_table
|
Line 1060 | Line 1133 |
---|
* @var string sort_days Time, in days, that the oldest post showing can have * @var string sql_time The SQL to search on the time specifyed by sort_days * @var bool firstpost_only Wether or not to search only on the first post of the topics
|
* @var string sort_days Time, in days, that the oldest post showing can have * @var string sql_time The SQL to search on the time specifyed by sort_days * @var bool firstpost_only Wether or not to search only on the first post of the topics
|
| * @var string sql_firstpost The SQL used in the WHERE claused to filter by firstpost.
|
* @var array ex_fid_ary Forum ids that must not be searched on * @var array sql_fora SQL query for ex_fid_ary * @var int start How many posts to skip in the search results (used for pagination)
| * @var array ex_fid_ary Forum ids that must not be searched on * @var array sql_fora SQL query for ex_fid_ary * @var int start How many posts to skip in the search results (used for pagination)
|
Line 1067 | Line 1141 |
---|
*/ $vars = array( 'total_results',
|
*/ $vars = array( 'total_results',
|
| 'type',
|
'select', 'sql_sort_table', 'sql_sort_join',
| 'select', 'sql_sort_table', 'sql_sort_join',
|
Line 1079 | Line 1154 |
---|
'sort_days', 'sql_time', 'firstpost_only',
|
'sort_days', 'sql_time', 'firstpost_only',
|
| 'sql_firstpost',
|
'ex_fid_ary', 'sql_fora', 'start',
| 'ex_fid_ary', 'sql_fora', 'start',
|
Line 1186 | Line 1262 |
---|
if (!$total_results && $is_mysql) { // Count rows for the executed queries. Replace $select within $sql with SQL_CALC_FOUND_ROWS, and run it.
|
if (!$total_results && $is_mysql) { // Count rows for the executed queries. Replace $select within $sql with SQL_CALC_FOUND_ROWS, and run it.
|
$sql_calc = str_replace('SELECT ' . $select, 'SELECT DISTINCT SQL_CALC_FOUND_ROWS p.post_id', $sql);
| $sql_calc = str_replace('SELECT ' . $select, 'SELECT SQL_CALC_FOUND_ROWS ' . $select, $sql);
|
$result = $this->db->sql_query($sql_calc); $this->db->sql_freeresult($result);
| $result = $this->db->sql_query($sql_calc); $this->db->sql_freeresult($result);
|
Line 1899 | Line 1975 |
---|
</dl> <dl> <dt><label for="fulltext_native_min_chars">' . $this->user->lang['MIN_SEARCH_CHARS'] . $this->user->lang['COLON'] . '</label><br /><span>' . $this->user->lang['MIN_SEARCH_CHARS_EXPLAIN'] . '</span></dt>
|
</dl> <dl> <dt><label for="fulltext_native_min_chars">' . $this->user->lang['MIN_SEARCH_CHARS'] . $this->user->lang['COLON'] . '</label><br /><span>' . $this->user->lang['MIN_SEARCH_CHARS_EXPLAIN'] . '</span></dt>
|
<dd><input id="fulltext_native_min_chars" type="number" size="3" maxlength="3" min="0" max="255" name="config[fulltext_native_min_chars]" value="' . (int) $this->config['fulltext_native_min_chars'] . '" /></dd>
| <dd><input id="fulltext_native_min_chars" type="number" min="0" max="255" name="config[fulltext_native_min_chars]" value="' . (int) $this->config['fulltext_native_min_chars'] . '" /></dd>
|
</dl> <dl> <dt><label for="fulltext_native_max_chars">' . $this->user->lang['MAX_SEARCH_CHARS'] . $this->user->lang['COLON'] . '</label><br /><span>' . $this->user->lang['MAX_SEARCH_CHARS_EXPLAIN'] . '</span></dt>
|
</dl> <dl> <dt><label for="fulltext_native_max_chars">' . $this->user->lang['MAX_SEARCH_CHARS'] . $this->user->lang['COLON'] . '</label><br /><span>' . $this->user->lang['MAX_SEARCH_CHARS_EXPLAIN'] . '</span></dt>
|
<dd><input id="fulltext_native_max_chars" type="number" size="3" maxlength="3" min="0" max="255" name="config[fulltext_native_max_chars]" value="' . (int) $this->config['fulltext_native_max_chars'] . '" /></dd>
| <dd><input id="fulltext_native_max_chars" type="number" min="0" max="255" name="config[fulltext_native_max_chars]" value="' . (int) $this->config['fulltext_native_max_chars'] . '" /></dd>
|
</dl> <dl> <dt><label for="fulltext_native_common_thres">' . $this->user->lang['COMMON_WORD_THRESHOLD'] . $this->user->lang['COLON'] . '</label><br /><span>' . $this->user->lang['COMMON_WORD_THRESHOLD_EXPLAIN'] . '</span></dt>
|
</dl> <dl> <dt><label for="fulltext_native_common_thres">' . $this->user->lang['COMMON_WORD_THRESHOLD'] . $this->user->lang['COLON'] . '</label><br /><span>' . $this->user->lang['COMMON_WORD_THRESHOLD_EXPLAIN'] . '</span></dt>
|
<dd><input id="fulltext_native_common_thres" type="text" size="3" maxlength="3" name="config[fulltext_native_common_thres]" value="' . (double) $this->config['fulltext_native_common_thres'] . '" /> %</dd>
| <dd><input id="fulltext_native_common_thres" type="text" name="config[fulltext_native_common_thres]" value="' . (double) $this->config['fulltext_native_common_thres'] . '" /> %</dd>
|
</dl> ';
| </dl> ';
|