mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
[ticket/11179] correct start parameter in native keyword search
PHPBB3-11179
This commit is contained in:
parent
8b7f306897
commit
a0ae223ef4
1 changed files with 19 additions and 9 deletions
|
@ -516,7 +516,7 @@ class phpbb_search_fulltext_native extends phpbb_search_base
|
||||||
* @param int $per_page number of ids each page is supposed to contain
|
* @param int $per_page number of ids each page is supposed to contain
|
||||||
* @return boolean|int total number of results
|
* @return boolean|int total number of results
|
||||||
*/
|
*/
|
||||||
public function keyword_search($type, $fields, $terms, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $m_approve_fid_ary, $topic_id, $author_ary, $author_name, &$id_ary, $start, $per_page)
|
public function keyword_search($type, $fields, $terms, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $m_approve_fid_ary, $topic_id, $author_ary, $author_name, &$id_ary, &$start, $per_page)
|
||||||
{
|
{
|
||||||
// No keywords? No posts.
|
// No keywords? No posts.
|
||||||
if (empty($this->search_query))
|
if (empty($this->search_query))
|
||||||
|
@ -855,10 +855,6 @@ class phpbb_search_fulltext_native extends phpbb_search_base
|
||||||
}
|
}
|
||||||
$this->db->sql_freeresult($result);
|
$this->db->sql_freeresult($result);
|
||||||
|
|
||||||
if (!sizeof($id_ary))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if we use mysql and the total result count is not cached yet, retrieve it from the db
|
// if we use mysql and the total result count is not cached yet, retrieve it from the db
|
||||||
if (!$total_results && $is_mysql)
|
if (!$total_results && $is_mysql)
|
||||||
|
@ -867,14 +863,14 @@ class phpbb_search_fulltext_native extends phpbb_search_base
|
||||||
$sql_array_copy = $sql_array;
|
$sql_array_copy = $sql_array;
|
||||||
$sql_array_copy['SELECT'] = 'SQL_CALC_FOUND_ROWS p.post_id ';
|
$sql_array_copy['SELECT'] = 'SQL_CALC_FOUND_ROWS p.post_id ';
|
||||||
|
|
||||||
$sql = $this->db->sql_build_query('SELECT', $sql_array_copy);
|
$sql_calc = $this->db->sql_build_query('SELECT', $sql_array_copy);
|
||||||
unset($sql_array_copy);
|
unset($sql_array_copy);
|
||||||
|
|
||||||
$this->db->sql_query($sql);
|
$this->db->sql_query($sql_calc);
|
||||||
$this->db->sql_freeresult($result);
|
$this->db->sql_freeresult($result);
|
||||||
|
|
||||||
$sql = 'SELECT FOUND_ROWS() as total_results';
|
$sql_count = 'SELECT FOUND_ROWS() as total_results';
|
||||||
$result = $this->db->sql_query($sql);
|
$result = $this->db->sql_query($sql_count);
|
||||||
$total_results = (int) $this->db->sql_fetchfield('total_results');
|
$total_results = (int) $this->db->sql_fetchfield('total_results');
|
||||||
$this->db->sql_freeresult($result);
|
$this->db->sql_freeresult($result);
|
||||||
|
|
||||||
|
@ -884,6 +880,20 @@ class phpbb_search_fulltext_native extends phpbb_search_base
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($start >= $total_results)
|
||||||
|
{
|
||||||
|
$start = floor(($total_results - 1) / $per_page) * $per_page;
|
||||||
|
|
||||||
|
$result = $this->db->sql_query_limit($sql, $this->config['search_block_size'], $start);
|
||||||
|
|
||||||
|
while ($row = $this->db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$id_ary[] = (int) $row[(($type == 'posts') ? 'post_id' : 'topic_id')];
|
||||||
|
}
|
||||||
|
$this->db->sql_freeresult($result);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// store the ids, from start on then delete anything that isn't on the current page because we only need ids for one page
|
// store the ids, from start on then delete anything that isn't on the current page because we only need ids for one page
|
||||||
$this->save_ids($search_key, $this->search_query, $author_ary, $total_results, $id_ary, $start, $sort_dir);
|
$this->save_ids($search_key, $this->search_query, $author_ary, $total_results, $id_ary, $start, $sort_dir);
|
||||||
$id_ary = array_slice($id_ary, 0, (int) $per_page);
|
$id_ary = array_slice($id_ary, 0, (int) $per_page);
|
||||||
|
|
Loading…
Add table
Reference in a new issue