aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/functions_display.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/functions_display.php')
-rw-r--r--phpBB/includes/functions_display.php95
1 files changed, 55 insertions, 40 deletions
diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php
index 46ea43254e..e9d9dbd6bd 100644
--- a/phpBB/includes/functions_display.php
+++ b/phpBB/includes/functions_display.php
@@ -44,26 +44,23 @@ function display_forums($root_data = '', $display_moderators = TRUE)
break;
default:
- $sql_lastread = 'LEFT JOIN ' . FORUMS_TRACK_TABLE . ' ft ON (ft.user_id = ' . $user->data['user_id'] . '
- AND ft.forum_id = f.forum_id)';
+ $sql_from = '(' . FORUMS_TABLE . ' f LEFT JOIN ' . FORUMS_TRACK_TABLE . ' ft ON (ft.user_id = ' . $user->data['user_id'] . ' AND ft.forum_id = f.forum_id)';
break;
}
$lastread_select = ', ft.mark_time ';
}
else
{
- $lastread_select = '';
- $sql_lastread = '';
+ $sql_from = FORUMS_TABLE . ' f ';
+ $lastread_select = $sql_lastread = '';
- $tracking_forums = (isset($_COOKIE[$config['cookie_name'] . '_f'])) ? unserialize(stripslashes($_COOKIE[$config['cookie_name'] . '_f'])) : array();
- $tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_t'])) ? unserialize(stripslashes($_COOKIE[$config['cookie_name'] . '_t'])) : array();
+ $tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? unserialize(stripslashes($_COOKIE[$config['cookie_name'] . '_track'])) : array();
}
$sql = "SELECT f.* $lastread_select
- FROM (" . FORUMS_TABLE . " f
- $sql_lastread)
- $sql_where
- ORDER BY left_id";
+ FROM $sql_from
+ $sql_where
+ ORDER BY f.left_id";
$result = $db->sql_query($sql);
$branch_root_id = $root_data['forum_id'];
@@ -133,20 +130,9 @@ function display_forums($root_data = '', $display_moderators = TRUE)
}
}
-/*
- if (!empty($forum_unread[$forum_id]))
- {
- $forum_unread[$parent_id] = true;
- }
-*/
+ $mark_time_forum = ($config['load_db_lastread']) ? $row['mark_time'] : ((isset($tracking_topics[$forum_id][0])) ? base_convert($tracking_topics[$forum_id][0], 36, 10) + $config['board_startdate'] : 0);
- if (!isset($forum_unread[$parent_id]))
- {
- $forum_unread[$parent_id] = false;
- }
-
- $check_time = (!$config['load_db_lastread']) ? $tracking_forums[$forum_id] : $row['mark_time'];
- if ($check_time < $row['forum_last_post_time'] && $user->data['user_id'] != ANONYMOUS)
+ if ($mark_time_forum < $row['forum_last_post_time'] && $user->data['user_id'] != ANONYMOUS)
{
$forum_unread[$parent_id] = true;
}
@@ -154,27 +140,56 @@ function display_forums($root_data = '', $display_moderators = TRUE)
$db->sql_freeresult();
/*
- if ($config['load_db_lastread'])
- {
- }
- else
+ if (isset($tracking_topics) && $user->data['user_id'] != ANONYMOUS)
{
- $forum_unread = array();
- $sql = "SELECT forum_id, topic_id, topic_last_post_time
+ $min_forum_time = base_convert(min($tracking_topics[$forum_id]), 36, 10) + $config['board_startdate'];
+ $max_forum_time = base_convert(max($tracking_topics[$forum_id]), 36, 10) + $config['board_startdate'];
+
+
+ // $mark_time_forum && $mark_time_topic
+ $sql = "SELECT topic_id, topic_last_post_time
FROM " . TOPICS_TABLE . "
- WHERE topic_last_post_time > " . ((sizeof($tracking_forums)) ? min($tracking_forums) : time() - 86400) . "
- $sql_forum_track;
+ WHERE forum_id = $forum_id
+ AND topic_last_post_time > $min_forum_time";//AND topic_last_post_time < $max_forum_time
$result = $db->sql_query($sql);
- while ($row = $db->sql_fetchrow($result))
+ $mark_time = 0;
+ if ($row2 = $db->sql_fetchrow($result))
{
- if (($tracking_forums[$row['forum_id']] > $tracking_topics[$row['topic_id']] &&
- $row['topic_last_post_time'] > $tracking_forums[$row['forum_id']]) ||
- ($tracking_topics[$row['topic_id']] > $tracking_forums[$row['forum_id']] &&
- $row['topic_last_post_time'] > $tracking_topics[$row['topic_id']]))
+ do
{
- $forum_unread[$row['forum_id']] = $row['topic_last_post_time'];
+ $mtopic_id = base_convert($row2['topic_id'], 10, 36);
+ $tracking_topics[$forum_id][$mtopic_id] = base_convert($tracking_topics[$forum_id][$mtopic_id], 36, 10);
+ $tracking_topics[$forum_id][0] = base_convert($tracking_topics[$forum_id][0], 36, 10);
+
+ echo $row2['topic_id'] . " :: " . $tracking_topics[$forum_id][$mtopic_id] . " :: " . $tracking_topics[$forum_id][0] . " :: " . $row2['topic_last_post_time'] . " :: " . $row['post_time'] . "<br />";
+
+ if ((($row2['topic_id'] != $topic_id &&
+ ($tracking_topics[$forum_id][$mtopic_id] >= $row2['topic_last_post_time'] ||
+ $tracking_topics[$forum_id][0] >= $row2['topic_last_post_time'])) ||
+ ($row2['topic_id'] == $topic_id && $row['post_time'] <= $row2['topic_last_post_time'])) &&
+ !isset($mark_read))
+ {
+ $mark_read = true;
+ }
+ else
+ {
+ $mark_read = false;
+ }
+ $mark_time = max($mark_time, $row2['topic_last_post_time']);
}
+ while ($row2 = $db->sql_fetchrow($result));
+ }
+ $db->sql_freeresult($result);
+
+ if ($mark_read)
+ {
+ markread('mark', $forum_id, false, $mark_time);
+ echo "HERE :: $mark_time :: " . time();
+ }
+ else
+ {
+ echo "HERE2";
}
}
*/
@@ -245,14 +260,14 @@ function display_forums($root_data = '', $display_moderators = TRUE)
}
}
- $folder_image = ($forum_unread[$forum_id]) ? 'sub_forum_new' : 'sub_forum';
+ $folder_image = (!empty($forum_unread[$forum_id])) ? 'sub_forum_new' : 'sub_forum';
}
else
{
switch ($row['forum_type'])
{
case FORUM_POST:
- $folder_image = ($forum_unread[$forum_id]) ? 'forum_new' : 'forum';
+ $folder_image = (!empty($forum_unread[$forum_id])) ? 'forum_new' : 'forum';
break;
case FORUM_LINK:
@@ -273,7 +288,7 @@ function display_forums($root_data = '', $display_moderators = TRUE)
}
else
{
- $folder_alt = ($forum_unread[$forum_id]) ? 'NEW_POSTS' : 'NO_NEW_POSTS';
+ $folder_alt = (!empty($forum_unread[$forum_id])) ? 'NEW_POSTS' : 'NO_NEW_POSTS';
}