diff options
author | Nils Adermann <naderman@naderman.de> | 2006-06-23 12:19:27 +0000 |
---|---|---|
committer | Nils Adermann <naderman@naderman.de> | 2006-06-23 12:19:27 +0000 |
commit | e6c3b97999cd7c68a3b0ea09c35174512cd7aebe (patch) | |
tree | e98c0d17740ba18183707b429028def57603cdbd | |
parent | 8b1555c15bbfe153570600f95259fb286db4cdee (diff) | |
download | forums-e6c3b97999cd7c68a3b0ea09c35174512cd7aebe.tar forums-e6c3b97999cd7c68a3b0ea09c35174512cd7aebe.tar.gz forums-e6c3b97999cd7c68a3b0ea09c35174512cd7aebe.tar.bz2 forums-e6c3b97999cd7c68a3b0ea09c35174512cd7aebe.tar.xz forums-e6c3b97999cd7c68a3b0ea09c35174512cd7aebe.zip |
- improve newposts search performance
git-svn-id: file:///svn/phpbb/trunk@6116 89ea8834-ac86-4346-8a33-228a782c2dd0
-rw-r--r-- | phpBB/search.php | 41 | ||||
-rw-r--r-- | phpBB/styles/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 @@ </tr> <!-- END searchresults --> <tr> - <td class="cat" colspan="7" valign="middle" align="center"><span class="gensmall">{L_DISPLAY_POSTS}:</span> {S_SELECT_SORT_DAYS}<!-- IF S_SELECT_SORT_KEY --> <span class="gensmall">{L_SORT_BY}:</span> {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR}<!-- ENDIF --> <input class="btnlite" type="submit" value="{L_GO}" name="sort" /></td> + <td class="cat" colspan="7" valign="middle" align="center"><!-- IF S_SELECT_SORT_DAYS or S_SELECT_SORT_KEY --><span class="gensmall">{L_DISPLAY_POSTS}:</span> {S_SELECT_SORT_DAYS}<!-- IF S_SELECT_SORT_KEY --> <span class="gensmall">{L_SORT_BY}:</span> {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR}<!-- ENDIF --> <input class="btnlite" type="submit" value="{L_GO}" name="sort" /><!-- ENDIF --></td> </tr> </table> @@ -116,7 +116,7 @@ </tr> <!-- END searchresults --> <tr> - <td class="cat" colspan="2" align="center"><span class="gensmall">{L_SORT_BY}:</span> {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR} <input class="btnlite" type="submit" name="sort" value="{L_GO}" /></td> + <td class="cat" colspan="2" align="center"><!-- IF S_SELECT_SORT_KEY --><span class="gensmall">{L_SORT_BY}:</span> {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR} <input class="btnlite" type="submit" name="sort" value="{L_GO}" /><!-- ENDIF --></td> </tr> </table> <!-- ENDIF --> |