diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 3a5a018a86..21d4963aa7 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -1665,22 +1665,21 @@ function get_complete_topic_tracking($forum_id, $topic_ids, $global_announce_lis * @param string $sql_limit Limits the size of unread topics list, 0 for unlimited query * * @return array[int][int] Topic ids as keys, mark_time of topic as value -* @author rxu */ -function get_unread_topics_list($user_id = false, $sql_extra = '', $sql_sort = '', $sql_limit = 1001) +function get_unread_topics($user_id = false, $sql_extra = '', $sql_sort = '', $sql_limit = 1001) { global $config, $db, $user; $user_id = ($user_id === false) ? (int) $user->data['user_id'] : (int) $user_id; + // Data array we're going to return + $unread_topics = array(); + if (empty($sql_sort)) { $sql_sort = 'ORDER BY t.topic_last_post_time DESC'; } - $tracked_topics_list = $unread_topics_list = $read_topics_list = array(); - $tracked_forums_list = $mark_time = array(); - if ($config['load_db_lastread'] && $user->data['is_registered']) { // Get list of the unread topics @@ -1712,7 +1711,8 @@ function get_unread_topics_list($user_id = false, $sql_extra = '', $sql_sort = ' while ($row = $db->sql_fetchrow($result)) { $topic_id = (int) $row['topic_id']; - $unread_topics_list[$topic_id] = ($row['forum_mark_time']) ? (int) $row['forum_mark_time'] : (int) $row['topic_mark_time']; + + $unread_topics[$topic_id] = ($row['forum_mark_time']) ? (int) $row['forum_mark_time'] : (int) $row['topic_mark_time']; } $db->sql_freeresult($result); } @@ -1750,29 +1750,31 @@ function get_unread_topics_list($user_id = false, $sql_extra = '', $sql_sort = ' if (isset($tracking_topics['t'][$topic_id36])) { - $last_read[$topic_id] = base_convert($tracking_topics['t'][$topic_id36], 36, 10) + $config['board_startdate']; - if ($row['topic_last_post_time'] > $last_read[$topic_id]) + $last_read = base_convert($tracking_topics['t'][$topic_id36], 36, 10) + $config['board_startdate']; + + if ($row['topic_last_post_time'] > $last_read) { - $unread_topics_list[$topic_id] = $last_read[$topic_id]; + $unread_topics[$topic_id] = $last_read; } } else if (isset($tracking_topics['f'][$forum_id])) { - $mark_time[$forum_id] = base_convert($tracking_topics['f'][$forum_id], 36, 10) + $config['board_startdate']; - if ($row['topic_last_post_time'] > $mark_time[$forum_id]) + $mark_time = base_convert($tracking_topics['f'][$forum_id], 36, 10) + $config['board_startdate']; + + if ($row['topic_last_post_time'] > $mark_time) { - $unread_topics_list[$topic_id] = $mark_time[$forum_id]; + $unread_topics[$topic_id] = $mark_time; } } else { - $unread_topics_list[$topic_id] = $user_lastmark; + $unread_topics[$topic_id] = $user_lastmark; } } $db->sql_freeresult($result); } - return $unread_topics_list; + return $unread_topics; } /** diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php index 328c4b1274..5caccc81d9 100644 --- a/phpBB/includes/functions_display.php +++ b/phpBB/includes/functions_display.php @@ -103,12 +103,12 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod $forum_tracking_info = array(); $branch_root_id = $root_data['forum_id']; - // Check for unread global announcements - // For index page only we do it + // Check for unread global announcements (index page only) $ga_unread = false; if ($root_data['forum_id'] == 0) { - $unread_ga_list = get_unread_topics_list($user->data['user_id'], 'AND t.forum_id = 0'); + $unread_ga_list = get_unread_topics($user->data['user_id'], 'AND t.forum_id = 0'); + if (sizeof($unread_ga_list)) { $ga_unread = true; diff --git a/phpBB/search.php b/phpBB/search.php index efe5c247cb..258297d088 100644 --- a/phpBB/search.php +++ b/phpBB/search.php @@ -387,7 +387,7 @@ if ($keywords || $author || $author_id || $search_id || $submit) $s_sort_key = $s_sort_dir = $u_sort_param = $s_limit_days = ''; $unread_list = array(); - $unread_list = get_unread_topics_list($user->data['user_id'], $sql_where, $sql_sort); + $unread_list = get_unread_topics($user->data['user_id'], $sql_where, $sql_sort); if (!empty($unread_list)) {