Introduced the $operator variable and cut the amount of SQL statments in half :)

git-svn-id: file:///svn/phpbb/trunk@302 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
James Atkinson 2001-05-16 00:56:59 +00:00
parent 47dce29bbd
commit 37c8601548

View file

@ -50,7 +50,13 @@ if(isset($HTTP_GET_VARS['view']))
{ {
if($HTTP_GET_VARS['view'] == 'newer') if($HTTP_GET_VARS['view'] == 'newer')
{ {
// Get next 'newest' topic insted of this topic $operator = ">";
}
else if($HTTP_GET_VARS['view'] == 'older')
{
$operator = "<";
}
switch($dbms) switch($dbms)
{ {
case 'oracle': case 'oracle':
@ -58,7 +64,7 @@ if(isset($HTTP_GET_VARS['view']))
f.forum_type, f.forum_name, f.forum_id, u.username, u.user_id 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 FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
WHERE t.topic_id = 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) (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 f.forum_id = t.forum_id
AND fm.forum_id = t.forum_id AND fm.forum_id = t.forum_id
AND u.user_id = fm.user_id"; AND u.user_id = fm.user_id";
@ -70,7 +76,7 @@ if(isset($HTTP_GET_VARS['view']))
f.forum_type, f.forum_name, f.forum_id, u.username, u.user_id 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 FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
WHERE t.topic_id in 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)) (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 f.forum_id = t.forum_id
AND fm.forum_id = t.forum_id AND fm.forum_id = t.forum_id
AND u.user_id = fm.user_id"; AND u.user_id = fm.user_id";
@ -84,7 +90,7 @@ if(isset($HTTP_GET_VARS['view']))
$sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies, $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 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 FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
WHERE t.topic_time > ".$resultset[0]['topic_time']." WHERE t.topic_time ".$operator." ".$resultset[0]['topic_time']."
AND f.forum_id = t.forum_id AND f.forum_id = t.forum_id
AND fm.forum_id = t.forum_id AND fm.forum_id = t.forum_id
AND u.user_id = fm.user_id"; AND u.user_id = fm.user_id";
@ -104,61 +110,6 @@ if(isset($HTTP_GET_VARS['view']))
} }
break; break;
} }
}
if($HTTP_GET_VARS['view'] == 'older')
{
// Get next 'oldest' 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 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)
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))
{
$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.<br>Reason: ".$dberror['message']."<br>Query: $sql", __LINE__, __FILE__);
}
else
{
error_die(SQL_QUERY, "Couldn't obtain topic information.", __LINE__, __FILE__);
}
}
break;
}
}
} }
// //
// End. // End.