diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php
index 26ed538450..8be6990bcb 100644
--- a/phpBB/viewtopic.php
+++ b/phpBB/viewtopic.php
@@ -50,114 +50,65 @@ if(isset($HTTP_GET_VARS['view']))
{
if($HTTP_GET_VARS['view'] == 'newer')
{
- // Get next 'newest' topic insted of this topic
- switch($dbms)
- {
- case 'oracle':
- $sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies,
- f.forum_type, f.forum_name, f.forum_id, u.username, u.user_id
- FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
- WHERE t.topic_id =
- (select topic_id from ".TOPICS_TABLE." WHERE topic_time > (select topic_time from ".TOPICS_TABLE." where topic_id = $topic_id) AND ROWNUM < 2 ORDER BY topic_time DESC)
- AND f.forum_id = t.forum_id
- AND fm.forum_id = t.forum_id
- AND u.user_id = fm.user_id";
- break;
- case 'mssql':
- case 'odbc':
- case 'postgres':
- $sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies,
- f.forum_type, f.forum_name, f.forum_id, u.username, u.user_id
- FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
- WHERE t.topic_id in
- (select min(topic_id) from ".TOPICS_TABLE." WHERE topic_time > (select topic_time as t_time from ".TOPICS_TABLE." where topic_id = $topic_id))
- AND f.forum_id = t.forum_id
- AND fm.forum_id = t.forum_id
- AND u.user_id = fm.user_id";
- break;
- default:
- // And now the stupid MySQL case...I wish they would get around to implementing subselectes...
- $sub_query = "SELECT topic_time FROM ".TOPICS_TABLE." WHERE topic_id = $topic_id";
- if($sub_result = $db->sql_query($sub_query))
- {
- $resultset = $db->sql_fetchrowset($sub_result);
- $sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies,
- f.forum_type, f.forum_name, f.forum_id, u.username, u.user_id
- FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
- WHERE t.topic_time > ".$resultset[0]['topic_time']."
- AND f.forum_id = t.forum_id
- AND fm.forum_id = t.forum_id
- AND u.user_id = fm.user_id";
- $db->sql_freeresult($sub_result);
- }
- else
- {
- if(DEBUG)
- {
- $dberror = $db->sql_error();
- error_die(SQL_QUERY, "Couldn't obtain topic information.
Reason: ".$dberror['message']."
Query: $sql", __LINE__, __FILE__);
- }
- else
- {
- error_die(SQL_QUERY, "Couldn't obtain topic information.", __LINE__, __FILE__);
- }
- }
- break;
- }
+ $operator = ">";
}
- if($HTTP_GET_VARS['view'] == 'older')
+ else if($HTTP_GET_VARS['view'] == 'older')
{
- // Get next 'oldest' topic insted of this topic
- switch($dbms)
- {
- case "oracle":
+ $operator = "<";
+ }
+
+ switch($dbms)
+ {
+ case 'oracle':
+ $sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies,
+ f.forum_type, f.forum_name, f.forum_id, u.username, u.user_id
+ FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
+ WHERE t.topic_id =
+ (select topic_id from ".TOPICS_TABLE." WHERE topic_time ".$operator." (select topic_time from ".TOPICS_TABLE." where topic_id = $topic_id) AND ROWNUM < 2 ORDER BY topic_time DESC)
+ AND f.forum_id = t.forum_id
+ AND fm.forum_id = t.forum_id
+ AND u.user_id = fm.user_id";
+ break;
+ case 'mssql':
+ case 'odbc':
+ case 'postgres':
+ $sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies,
+ f.forum_type, f.forum_name, f.forum_id, u.username, u.user_id
+ FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
+ WHERE t.topic_id in
+ (select min(topic_id) from ".TOPICS_TABLE." WHERE topic_time ".$operator." (select topic_time as t_time from ".TOPICS_TABLE." where topic_id = $topic_id))
+ AND f.forum_id = t.forum_id
+ AND fm.forum_id = t.forum_id
+ AND u.user_id = fm.user_id";
+ break;
+ default:
+ // And now the stupid MySQL case...I wish they would get around to implementing subselectes...
+ $sub_query = "SELECT topic_time FROM ".TOPICS_TABLE." WHERE topic_id = $topic_id";
+ if($sub_result = $db->sql_query($sub_query))
+ {
+ $resultset = $db->sql_fetchrowset($sub_result);
$sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies,
f.forum_type, f.forum_name, f.forum_id, u.username, u.user_id
FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
- WHERE t.topic_id =
- (select min(topic_id) from ".TOPICS_TABLE." WHERE topic_time < (select topic_time from ".TOPICS_TABLE." where topic_id = $topic_id) AND ROWNUM < 2 ORDER BY topic_time DESC)
+ WHERE t.topic_time ".$operator." ".$resultset[0]['topic_time']."
AND f.forum_id = t.forum_id
AND fm.forum_id = t.forum_id
AND u.user_id = fm.user_id";
- break;
- case "postgres":
- $sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies,
- f.forum_type, f.forum_name, f.forum_id, u.username, u.user_id
- FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
- WHERE t.topic_id in
- (select topic_id from ".TOPICS_TABLE." WHERE topic_time < (select topic_time as t_time from ".TOPICS_TABLE." where topic_id = $topic_id))
- AND f.forum_id = t.forum_id
- AND fm.forum_id = t.forum_id
- AND u.user_id = fm.user_id";
- break;
- default:
- $sub_query = "SELECT topic_time FROM ".TOPICS_TABLE." WHERE topic_id = $topic_id";
- if($sub_result = $db->sql_query($sub_query))
+ $db->sql_freeresult($sub_result);
+ }
+ else
+ {
+ if(DEBUG)
{
- $resultset = $db->sql_fetchrowset($sub_result);
- $sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies,
- f.forum_type, f.forum_name, f.forum_id, u.username, u.user_id
- FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
- WHERE t.topic_time < ".$resultset[0]['topic_time']."
- AND f.forum_id = t.forum_id
- AND fm.forum_id = t.forum_id
- AND u.user_id = fm.user_id";
- $db->sql_freeresult($sub_result);
+ $dberror = $db->sql_error();
+ error_die(SQL_QUERY, "Couldn't obtain topic information.
Reason: ".$dberror['message']."
Query: $sql", __LINE__, __FILE__);
}
else
{
- if(DEBUG)
- {
- $dberror = $db->sql_error();
- error_die(SQL_QUERY, "Couldn't obtain topic information.
Reason: ".$dberror['message']."
Query: $sql", __LINE__, __FILE__);
- }
- else
- {
- error_die(SQL_QUERY, "Couldn't obtain topic information.", __LINE__, __FILE__);
- }
+ error_die(SQL_QUERY, "Couldn't obtain topic information.", __LINE__, __FILE__);
}
- break;
- }
+ }
+ break;
}
}
//