diff --git a/phpBB/language/lang_english.php b/phpBB/language/lang_english.php
index 36dcf2fb61..50bac6ca26 100755
--- a/phpBB/language/lang_english.php
+++ b/phpBB/language/lang_english.php
@@ -90,6 +90,7 @@ $l_returnindex = "$l_toreturn to the forum index";
$l_returntopic = "$l_toreturn to the forum topic list.";
$l_error = "Error";
+$l_dberror = "A database error occured, please try again later.";
$l_tryagain = "Please go back and try again.";
$l_mismatch = "Passwords do not match.";
$l_userremoved = "This user has been removed from the User database";
diff --git a/phpBB/profile.php b/phpBB/profile.php
index 2bf1c1032f..273692b510 100644
--- a/phpBB/profile.php
+++ b/phpBB/profile.php
@@ -411,6 +411,25 @@ if(isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']))
include('includes/page_tail.'.$phpEx);
}
+ else
+ {
+ if(DEBUG)
+ {
+ $error = $db->sql_error();
+ $error_msg = "Could not update the users table.
Reason: ".$error['message']."
Query: $sql";
+ }
+ else
+ {
+ $error_msg = $l_dberror;
+ }
+ $template->set_filenames(array(
+ "reg_header" => "error_body.tpl"
+ ));
+ $template->assign_vars(array(
+ "ERROR_MESSAGE" => $error_msg
+ ));
+ $template->pparse("reg_header");
+ }
}
else
{
diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php
index 65699967ad..18ecba9c21 100644
--- a/phpBB/viewtopic.php
+++ b/phpBB/viewtopic.php
@@ -27,8 +27,6 @@ include('includes/bbcode.'.$phpEx);
$page_title = "View Topic - $topic_title";
$pagetype = "viewtopic";
-$is_moderator = 0;
-
if(!isset($HTTP_GET_VARS['topic'])) // For backward compatibility
{
$topic_id = $HTTP_GET_VARS[POST_TOPIC_URL];
@@ -38,6 +36,8 @@ else
$topic_id = $HTTP_GET_VARS['topic'];
}
+$is_moderator = 0;
+
if(!isset($topic_id))
{
error_die(GENERAL_ERROR, "You have reached this page in error, please go back and try again");
@@ -57,29 +57,36 @@ if(isset($HTTP_GET_VARS['view']))
$operator = "<";
}
- switch(SQL_LAYER)
+ switch($dbms)
{
- case 'mysql':
- //
- // 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";
+ case 'oracle':
+ 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 = ".$HTTP_GET_VARS[POST_FORUM_URL]."
+ 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))
{
- $result = $db->sql_fetchrow($sub_result);
- $sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies,
+ $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, ".TOPICS_TABLE." t2, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
- WHERE t.topic_time ".$operator." ".$result['topic_time']."
- AND t2.topic_id = $topic_id
- AND t.forum_id = t2.forum_id
- AND f.forum_id = t.forum_id
- AND fm.forum_id = t.forum_id
- AND u.user_id = fm.user_id
- ORDER BY t.topic_time DESC";
+ FROM ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".FORUM_MODS_TABLE." fm, ".USERS_TABLE." u
+ WHERE t.topic_time ".$operator." ".$resultset[0]['topic_time']."
+ AND f.forum_id = ".$HTTP_GET_VARS[POST_FORUM_URL]."
+ 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
@@ -94,22 +101,7 @@ if(isset($HTTP_GET_VARS['view']))
error_die(SQL_QUERY, "Couldn't obtain topic information.", __LINE__, __FILE__);
}
}
- break;
-
- default:
- //
- // The default query handles all the other supported
- // DB's; PostgreSQL, MSSQL, ODBC and of course Oracle
- //
- echo $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;
+ break;
}
}
//
@@ -117,15 +109,13 @@ if(isset($HTTP_GET_VARS['view']))
//
else
{
-
- $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 = $topic_id
- AND f.forum_id = t.forum_id
+ $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 = $topic_id
+ AND f.forum_id = t.forum_id
AND fm.forum_id = t.forum_id
AND u.user_id = fm.user_id";
-
}
if(!$result = $db->sql_query($sql))
@@ -181,7 +171,11 @@ for($x = 0; $x < $total_rows; $x++)
// Add checking for private forums here
//
-
+//
+// Set the body template
+//
+$template->set_filenames(array(
+ "body" => "viewtopic_body.tpl"));
$total_replies = $forum_row[0]['topic_replies'] + 1;
@@ -215,33 +209,6 @@ if(!$ranks_result = $db->sql_query($sql))
$postrow = $db->sql_fetchrowset($result);
$ranksrow = $db->sql_fetchrowset($ranksresult);
-//
-// Dump out the page header
-//
-include('includes/page_header.'.$phpEx);
-
-$template->set_filenames(array(
- "body" => "viewtopic_body.tpl",
- "jumpbox" => "jumpbox.tpl")
-);
-$jumpbox = make_jumpbox();
-$template->assign_vars(array(
- "JUMPBOX_LIST" => $jumpbox,
- "SELECT_NAME" => POST_FORUM_URL)
-);
-$template->assign_var_from_handle("JUMPBOX", "jumpbox");
-$template->assign_vars(array(
- "FORUM_ID" => $forum_id,
- "FORUM_NAME" => $forum_name,
- "TOPIC_ID" => $topic_id,
- "TOPIC_TITLE" => $topic_title,
- "POST_FORUM_URL" => POST_FORUM_URL,
- "USERS_BROWSING" => $users_browsing)
-);
-//
-// End header
-//
-
//
// Post, reply and other URL generation for
// templating vars
@@ -249,15 +216,22 @@ $template->assign_vars(array(
$new_topic_url = append_sid("posting.".$phpEx."?mode=newtopic&".POST_FORUM_URL."=$forum_id");
$reply_topic_url = append_sid("posting.".$phpEx."?mode=reply&".POST_TOPIC_URL."=$topic_id");
$view_forum_url = append_sid("viewforum.".$phpEx."?".POST_FORUM_URL."=$forum_id");
-$view_older_topic_url = append_sid("viewtopic.".$phpEx."?".POST_TOPIC_URL."=".$topic_id."&view=newer");
-$view_newer_topic_url = append_sid("viewtopic.".$phpEx."?".POST_TOPIC_URL."=".$topic_id."&view=older");
+$view_older_topic_url = append_sid("viewtopic.".$phpEx."?".POST_TOPIC_URL."=".$topic_id."&".POST_FORUM_URL."=$forum_id&view=newer");
+$view_newer_topic_url = append_sid("viewtopic.".$phpEx."?".POST_TOPIC_URL."=".$topic_id."&".POST_FORUM_URL."=$forum_id&view=older");
$template->assign_vars(array(
"U_POST_NEW_TOPIC" => $new_topic_url,
+ "FORUM_NAME" => $forum_name,
+ "TOPIC_TITLE" => $topic_title,
"U_VIEW_FORUM" => $view_forum_url,
"U_VIEW_OLDER_TOPIC" => $view_older_topic_url,
"U_VIEW_NEWER_TOPIC" => $view_newer_topic_url,
"U_POST_REPLY_TOPIC" => $reply_topic_url));
+//
+// Dump out the page header
+//
+include('includes/page_header.'.$phpEx);
+
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
@@ -411,6 +385,16 @@ $template->assign_vars(array(
$template->pparse("body");
+flush();
+
+//
+// Update the number of views on this topic. I did the flush() above so the user can see the output
+// right away and dosan't have to wait for this update query to finish.
+//
+$sql = "UPDATE ".TOPICS_TABLE." SET topic_views = topic_views + 1 WHERE topic_id = $topic_id";
+// We don't care too much if this query succeeds or not so I'm not going to bother checking
+$db->sql_query($sql);
+
include('includes/page_tail.'.$phpEx);
-?>
+?>
\ No newline at end of file