From e6c3b97999cd7c68a3b0ea09c35174512cd7aebe Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Fri, 23 Jun 2006 12:19:27 +0000 Subject: [PATCH] - improve newposts search performance git-svn-id: file:///svn/phpbb/trunk@6116 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/search.php | 41 ++++++++----------- .../subSilver/template/search_results.html | 4 +- 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/phpBB/search.php b/phpBB/search.php index ae38f91965..08792d18f6 100644 --- a/phpBB/search.php +++ b/phpBB/search.php @@ -322,30 +322,24 @@ if ($keywords || $author || $author_id || $search_id || $submit) break; case 'newposts': - $show_results = request_var('sr', 'topics'); - $show_results = ($show_results == 'posts') ? 'posts' : 'topics'; + // force sorting + $show_results = (request_var('sr', 'topics') == 'posts') ? 'posts' : 'topics'; + $sort_key = 't'; + $sort_dir = 'd'; $sort_by_sql['t'] = ($show_results == 'posts') ? 'p.post_time' : 't.topic_last_post_time'; - $sort_by_sql['s'] = ($show_results == 'posts') ? 'p.post_subject' : 't.topic_title'; $sql_sort = 'ORDER BY ' . $sort_by_sql[$sort_key] . (($sort_dir == 'a') ? ' ASC' : ' DESC'); - $sort_join = ($sort_key == 'f') ? FORUMS_TABLE . ' f, ' : ''; - $sql_sort = ($sort_key == 'f') ? ' AND f.forum_id = p.forum_id ' . $sql_sort : $sql_sort; + if (!$sort_days) + { + $sort_days = 1; + } + gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param); + $s_sort_key = $s_sort_dir = $u_sort_param = $s_limit_days = ''; if ($show_results == 'posts') { - if ($sort_key == 'i') - { - $sort_join = TOPICS_TABLE . ' t, '; - $sql_sort = ' AND t.topic_id = p.topic_id ' . $sql_sort; - } - else if ($sort_key == 'a') - { - $sort_join = USERS_TABLE . ' u, '; - $sql_sort = ' AND u.user_id = p.poster_id ' . $sql_sort; - } - - $sql = "SELECT p.post_id - FROM $sort_join" . POSTS_TABLE . ' p + $sql = 'SELECT p.post_id + FROM ' . POSTS_TABLE . ' p WHERE p.post_time > ' . $user->data['user_lastvisit'] . " $m_approve_fid_sql " . ((sizeof($ex_fid_ary)) ? ' AND p.forum_id NOT IN (' . implode(',', $ex_fid_ary) . ')' : '') . " @@ -354,12 +348,11 @@ if ($keywords || $author || $author_id || $search_id || $submit) } else { - $sql = 'SELECT DISTINCT ' . $sort_by_sql[$sort_key] . ", p.topic_id - FROM $sort_join" . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p - WHERE p.post_time > ' . $user->data['user_lastvisit'] . " - AND t.topic_id = p.topic_id - $m_approve_fid_sql - " . ((sizeof($ex_fid_ary)) ? ' AND p.forum_id NOT IN (' . implode(',', $ex_fid_ary) . ')' : '') . " + $sql = 'SELECT t.topic_id + FROM ' . TOPICS_TABLE . ' t + WHERE t.topic_last_post_time > ' . $user->data['user_lastvisit'] . ' + ' . str_replace(array('p.', 'post_'), array('t.', 'topic_'), $m_approve_fid_sql) . ' + ' . ((sizeof($ex_fid_ary)) ? 'AND t.forum_id NOT IN (' . implode(',', $ex_fid_ary) . ')' : '') . " $sql_sort"; $field = 'topic_id'; } diff --git a/phpBB/styles/subSilver/template/search_results.html b/phpBB/styles/subSilver/template/search_results.html index e7a5098e65..bbbde2c921 100644 --- a/phpBB/styles/subSilver/template/search_results.html +++ b/phpBB/styles/subSilver/template/search_results.html @@ -67,7 +67,7 @@ - {L_DISPLAY_POSTS}: {S_SELECT_SORT_DAYS} {L_SORT_BY}: {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR}  + {L_DISPLAY_POSTS}: {S_SELECT_SORT_DAYS} {L_SORT_BY}: {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR}  @@ -116,7 +116,7 @@ - {L_SORT_BY}: {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR}  + {L_SORT_BY}: {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR}