1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-04-25 10:05:21 +02:00

[ticket/9976] Fix link to post when two posts have the same post_time.

When two posts have the same post_time, a link to the first post being on
page 1, leads you to the second post with the same timestamp on page two.
So in case the post_times are equal, we need to use the post_id to correctly
order the posts.

PHPBB3-9976
This commit is contained in:
Joas Schilling 2011-04-08 14:44:21 +02:00 committed by Oleg Pudeyev
parent edb745e951
commit bb7e8bb424

View File

@ -196,7 +196,7 @@ if ($db->sql_layer === 'firebird')
// The FROM-Order is quite important here, else t.* columns can not be correctly bound.
if ($post_id)
{
$sql_array['SELECT'] .= ', p.post_approved, p.post_time';
$sql_array['SELECT'] .= ', p.post_approved, p.post_time, p.post_id';
$sql_array['FROM'][POSTS_TABLE] = 'p';
}
@ -317,8 +317,16 @@ if ($post_id)
$sql = 'SELECT COUNT(p.post_id) AS prev_posts
FROM ' . POSTS_TABLE . " p
WHERE p.topic_id = {$topic_data['topic_id']}
" . ((!$auth->acl_get('m_approve', $forum_id)) ? 'AND p.post_approved = 1' : '') . '
AND ' . (($sort_dir == 'd') ? "p.post_time >= {$topic_data['post_time']}" : "p.post_time <= {$topic_data['post_time']}");
" . ((!$auth->acl_get('m_approve', $forum_id)) ? 'AND p.post_approved = 1' : '');
if ($sort_dir == 'd')
{
$sql .= " AND (p.post_time > {$topic_data['post_time']} OR (p.post_time = {$topic_data['post_time']} AND p.post_id >= {$topic_data['post_id']}))";
}
else
{
$sql .= " AND (p.post_time < {$topic_data['post_time']} OR (p.post_time = {$topic_data['post_time']} AND p.post_id <= {$topic_data['post_id']}))";
}
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);