aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/viewforum.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/viewforum.php')
-rw-r--r--phpBB/viewforum.php38
1 files changed, 11 insertions, 27 deletions
diff --git a/phpBB/viewforum.php b/phpBB/viewforum.php
index 06849cd877..0081cd1725 100644
--- a/phpBB/viewforum.php
+++ b/phpBB/viewforum.php
@@ -29,7 +29,6 @@ $sort_days = (isset($_REQUEST['st'])) ? max(intval($_REQUEST['st']), 0) : ((!emp
$sort_key = (!empty($_REQUEST['sk'])) ? htmlspecialchars($_REQUEST['sk']) : ((!empty($user->data['user_sortby_type'])) ? $user->data['user_sortby_type'] : 't');
$sort_dir = (!empty($_REQUEST['sd'])) ? htmlspecialchars($_REQUEST['sd']) : ((!empty($user->data['user_sortby_dir'])) ? $user->data['user_sortby_dir'] : 'd');
-
// Check if the user has actually sent a forum ID with his/her request
// If not give them a nice error page.
if (!$forum_id)
@@ -37,7 +36,6 @@ if (!$forum_id)
trigger_error('NO_FORUM');
}
-
// Grab appropriate forum data
if ($user->data['user_id'] == ANONYMOUS)
{
@@ -87,7 +85,6 @@ if (!($forum_data = $db->sql_fetchrow($result)))
}
$db->sql_freeresult($result);
-
// Is this forum a link? ... User got here either because the
// number of clicks is being tracked or they guessed the id
if ($forum_data['forum_link'])
@@ -104,11 +101,9 @@ if ($forum_data['forum_link'])
redirect($forum_data['forum_link']);
}
-
// Configure style, language, etc.
$user->setup(false, $forum_data['forum_style']);
-
// Forum is passworded ... check whether access has been granted to this
// user this session, if not show login box
if ($forum_data['forum_password'])
@@ -116,9 +111,8 @@ if ($forum_data['forum_password'])
login_forum_box($forum_data);
}
-
// Permissions check
-if (!$auth->acl_gets('f_read', $forum_id))
+if (!$auth->acl_get('f_read', $forum_id))
{
if ($user->data['user_id'] != ANONYMOUS)
{
@@ -128,11 +122,9 @@ if (!$auth->acl_gets('f_read', $forum_id))
login_box(preg_replace('#.*?([a-z]+?\.' . $phpEx . '.*?)$#i', '\1', htmlspecialchars($_SERVER['REQUEST_URI'])), '', $user->lang['LOGIN_VIEWFORUM']);
}
-
// Build navigation links
generate_forum_nav($forum_data);
-
// Do we have subforums?
$moderators = array();
@@ -238,9 +230,6 @@ if ($forum_data['forum_type'] == FORUM_POST)
$sql_limit_time = '';
}
- // Select the sort order
- $sql_sort_order = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');
-
// Basic pagewide vars
$post_alt = ($forum_data['forum_status'] == ITEM_LOCKED) ? $user->lang['FORUM_LOCKED'] : $user->lang['POST_NEW_TOPIC'];
@@ -282,7 +271,6 @@ if ($forum_data['forum_type'] == FORUM_POST)
'U_MARK_READ' => "viewforum.$phpEx$SID&f=$forum_id&mark=topics")
);
-
// Grab icons
$icons = array();
obtain_icons($icons);
@@ -302,12 +290,12 @@ if ($forum_data['forum_type'] == FORUM_POST)
$sql_approved = ($auth->acl_get('m_approve', $forum_id)) ? '' : 'AND t.topic_approved = 1';
$sql_select = (($config['load_db_lastread'] || $config['load_db_track']) && $user->data['user_id'] != ANONYMOUS) ? ', tt.mark_type, tt.mark_time' : '';
- // Obtain announcements
+ // Obtain announcements ... removed sort ordering, sort by time in all cases
$sql = "SELECT t.* $sql_select
FROM $sql_from
WHERE t.forum_id IN ($forum_id, 0)
- AND t.topic_type IN (" . POST_ANNOUNCE . ', ' . POST_GLOBAL . ")
- ORDER BY $sql_sort_order";
+ AND t.topic_type IN (" . POST_ANNOUNCE . ', ' . POST_GLOBAL . ')
+ ORDER BY t.topic_time DESC';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
@@ -320,7 +308,6 @@ if ($forum_data['forum_type'] == FORUM_POST)
// If the user is trying to reach late pages, start searching from the end
$store_reverse = FALSE;
$sql_limit = $config['topics_per_page'];
-
if ($start > $topics_count / 2)
{
$store_reverse = TRUE;
@@ -330,16 +317,20 @@ if ($forum_data['forum_type'] == FORUM_POST)
$sql_limit = min($config['topics_per_page'], max(1, $topics_count - $start));
}
- $sql_sort_order = preg_replace('/(ASC|DESC)/e', "('\$1' == 'ASC') ? 'DESC' : 'ASC'", $sql_sort_order);
+ // Select the sort order
+ $sql_sort_order = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'ASC' : 'DESC');
$sql_start = max(0, $topics_count - $sql_limit - $start);
}
else
{
+ // Select the sort order
+ $sql_sort_order = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');
$sql_start = $start;
}
// Obtain other topics
- $sql = "SELECT t.* $sql_select
+ $sql_rownum = (SQL_LAYER != 'oracle') ? '' : ', ROWNUM rnum ';
+ $sql = "SELECT t.* $sql_select$sql_rownum
FROM $sql_from
WHERE t.forum_id = $forum_id
AND t.topic_type NOT IN (" . POST_ANNOUNCE . ', ' . POST_GLOBAL . ")
@@ -355,14 +346,7 @@ if ($forum_data['forum_type'] == FORUM_POST)
}
$db->sql_freeresult($result);
- if ($store_reverse)
- {
- $topic_list = array_merge($announcement_list, array_reverse($topic_list));
- }
- else
- {
- $topic_list = array_merge($announcement_list, $topic_list);
- }
+ $topic_list = ($store_reverse) ? array_merge($announcement_list, array_reverse($topic_list)) : array_merge($announcement_list, $topic_list);
// Okay, lets dump out the page ...
if (count($topic_list))