aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2006-06-23 12:19:27 +0000
committerNils Adermann <naderman@naderman.de>2006-06-23 12:19:27 +0000
commite6c3b97999cd7c68a3b0ea09c35174512cd7aebe (patch)
treee98c0d17740ba18183707b429028def57603cdbd
parent8b1555c15bbfe153570600f95259fb286db4cdee (diff)
downloadforums-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.php41
-rw-r--r--phpBB/styles/subSilver/template/search_results.html4
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 -->&nbsp;<span class="gensmall">{L_SORT_BY}:</span> {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR}<!-- ENDIF -->&nbsp;<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 -->&nbsp;<span class="gensmall">{L_SORT_BY}:</span> {S_SELECT_SORT_KEY} {S_SELECT_SORT_DIR}<!-- ENDIF -->&nbsp;<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}&nbsp;<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}&nbsp;<input class="btnlite" type="submit" name="sort" value="{L_GO}" /><!-- ENDIF --></td>
</tr>
</table>
<!-- ENDIF -->