aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/functions.php12
-rw-r--r--phpBB/includes/functions_display.php19
2 files changed, 25 insertions, 6 deletions
diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php
index 12272b152c..6750772ebb 100644
--- a/phpBB/includes/functions.php
+++ b/phpBB/includes/functions.php
@@ -1730,13 +1730,13 @@ function get_unread_topics_list($user_id = false, $sql_extra = '')
$tracked_topics_list = array_merge(array_keys($unread_topics_list), array_keys($read_topics_list));
// And the last step - find unread topics were not found before (that can mean a user has never read some forums)
- $sql = 'SELECT topic_id
- FROM ' . TOPICS_TABLE . '
- WHERE topic_last_post_time > ' . (int) $user->data['user_lastmark'] . '
- AND ' . $db->sql_in_set('topic_id', $tracked_topics_list, true, true) . '
- AND ' . $db->sql_in_set('forum_id', $tracked_forums_list, true, true) . "
+ $sql = 'SELECT t.topic_id
+ FROM ' . TOPICS_TABLE . ' t
+ WHERE t.topic_last_post_time > ' . (int) $user->data['user_lastmark'] . '
+ AND ' . $db->sql_in_set('t.topic_id', $tracked_topics_list, true, true) . '
+ AND ' . $db->sql_in_set('t.forum_id', $tracked_forums_list, true, true) . "
$sql_extra
- ORDER BY topic_last_post_time DESC";
+ ORDER BY t.topic_last_post_time DESC";
$result = $db->sql_query_limit($sql, 1000);
while ($row = $db->sql_fetchrow($result))
diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php
index 4bf5c24e0d..569e1e6400 100644
--- a/phpBB/includes/functions_display.php
+++ b/phpBB/includes/functions_display.php
@@ -102,6 +102,19 @@ 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
+ $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');
+ if (sizeof($unread_ga_list))
+ {
+ $ga_unread = true;
+ }
+ }
+
while ($row = $db->sql_fetchrow($result))
{
$forum_id = $row['forum_id'];
@@ -309,6 +322,12 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
$forum_unread = (isset($forum_tracking_info[$forum_id]) && $row['orig_forum_last_post_time'] > $forum_tracking_info[$forum_id]) ? true : false;
+ // Mark the first visible forum on index as unread if there's any unread global announcement
+ if (($forum_id == $forum_ids_moderator[0]) && ($root_data['forum_id'] == 0) && $ga_unread)
+ {
+ $forum_unread = true;
+ }
+
$folder_image = $folder_alt = $l_subforums = '';
$subforums_list = array();