From 4cb5081b53749418ec4a9c39d499ce1fc0b8138a Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Fri, 5 Aug 2011 22:15:15 +0200 Subject: [PATCH] Unread topics do not get displayed --- root/portal/includes/functions.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/root/portal/includes/functions.php b/root/portal/includes/functions.php index 600445f7..f55c6f1b 100644 --- a/root/portal/includes/functions.php +++ b/root/portal/includes/functions.php @@ -581,7 +581,7 @@ function get_portal_tracking_info($fetch_news) { global $config, $user; - $last_read = $topic_ids = $forum_ids = $tracking_info = array(); + $last_read = $topic_ids = $forum_ids = $tracking_info = $rev_forum_ids = array(); /** * group everything by the forum IDs @@ -590,6 +590,9 @@ function get_portal_tracking_info($fetch_news) for ($i = 0; $i < $count; ++$i) { $tracking_info[$fetch_news[$i]['forum_id']][] = $fetch_news[$i]['topic_id']; + $topic_ids[] = $fetch_news[$i]['topic_id']; + $forum_ids[] = $fetch_news[$i]['forum_id']; + $rev_forum_ids[$fetch_news[$i]['topic_id']] = $fetch_news[$i]['forum_id']; // the other way round also helps } foreach ($tracking_info as $forum_id => $current_forum) @@ -628,11 +631,14 @@ function get_portal_tracking_info($fetch_news) } $db->sql_freeresult($result); - $user_lastmark = (isset($mark_time[$forum_id])) ? $mark_time[$forum_id] : $user->data['user_lastmark']; + foreach($forum_ids as $current_forum) + { + $user_lastmark[$current_forum] = (isset($mark_time[$current_forum])) ? $mark_time[$current_forum] : $user->data['user_lastmark']; + } foreach ($topic_ids as $topic_id) { - $last_read[$topic_id] = $user_lastmark; + $last_read[$topic_id] = (!isset($last_read[$topic_id]) || $user_lastmark[$rev_forum_ids[$topic_id]] > $last_read[$topic_id]) ? $user_lastmark[$rev_forum_ids[$topic_id]] : $last_read[$topic_id]; } } }