Author: bantu
Date: Tue Jul 28 15:56:39 2009
New Revision: 9883
Log:
More small adjustments to get_unread_topics_list(). #46765
Modified:
branches/phpBB-3_0_0/phpBB/includes/functions.php
Modified: branches/phpBB-3_0_0/phpBB/includes/functions.php
==============================================================================
*** branches/phpBB-3_0_0/phpBB/includes/functions.php (original)
--- branches/phpBB-3_0_0/phpBB/includes/functions.php Tue Jul 28 15:56:39 2009
***************
*** 4139,4145 ****
if ($user_id === false)
{
! $user_id = $user->data['user_id'];
}
$tracked_topics_list = $unread_topics_list = $read_topics_list = array();
--- 4139,4145 ----
if ($user_id === false)
{
! $user_id = (int) $user->data['user_id'];
}
$tracked_topics_list = $unread_topics_list = $read_topics_list = array();
***************
*** 4151,4161 ****
// This list is to fetch later the forums user never read (fully) before
$sql = 'SELECT forum_id
FROM ' . FORUMS_TRACK_TABLE . "
! WHERE user_id = {$user_id}";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
! $tracked_forums_list[] = $row['forum_id'];
}
$db->sql_freeresult($result);
--- 4151,4162 ----
// This list is to fetch later the forums user never read (fully) before
$sql = 'SELECT forum_id
FROM ' . FORUMS_TRACK_TABLE . "
! WHERE user_id = $user_id";
$result = $db->sql_query($sql);
+
while ($row = $db->sql_fetchrow($result))
{
! $tracked_forums_list[] = (int) $row['forum_id'];
}
$db->sql_freeresult($result);
***************
*** 4164,4183 ****
FROM ' . TOPICS_TABLE . ' t, ' . TOPICS_TRACK_TABLE . " tt
WHERE t.topic_id = tt.topic_id
AND t.topic_last_post_time >= tt.mark_time
! AND tt.user_id = {$user_id}
$sql_extra
ORDER BY t.topic_last_post_time DESC";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
if ($row['topic_last_post_time'] == $row['mark_time'])
{
// Check if there're read topics for the forums having unread ones
! $read_topics_list[$row['topic_id']] = $row['mark_time'];
}
else
{
! $unread_topics_list[$row['topic_id']] = $row['mark_time'];
}
}
$db->sql_freeresult($result);
--- 4165,4185 ----
FROM ' . TOPICS_TABLE . ' t, ' . TOPICS_TRACK_TABLE . " tt
WHERE t.topic_id = tt.topic_id
AND t.topic_last_post_time >= tt.mark_time
! AND tt.user_id = $user_id
$sql_extra
ORDER BY t.topic_last_post_time DESC";
$result = $db->sql_query($sql);
+
while ($row = $db->sql_fetchrow($result))
{
if ($row['topic_last_post_time'] == $row['mark_time'])
{
// Check if there're read topics for the forums having unread ones
! $read_topics_list[$row['topic_id']] = (int) $row['mark_time'];
}
else
{
! $unread_topics_list[$row['topic_id']] = (int) $row['mark_time'];
}
}
$db->sql_freeresult($result);
***************
*** 4192,4204 ****
WHERE t.forum_id = ft.forum_id
AND t.topic_last_post_time > ft.mark_time
AND ' . $db->sql_in_set('t.topic_id', $tracked_topics_list, true, true) . "
! AND ft.user_id = {$user_id}
$sql_extra
ORDER BY t.topic_last_post_time DESC";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
! $unread_topics_list[$row['topic_id']] = $row['mark_time'];
}
$db->sql_freeresult($result);
--- 4194,4207 ----
WHERE t.forum_id = ft.forum_id
AND t.topic_last_post_time > ft.mark_time
AND ' . $db->sql_in_set('t.topic_id', $tracked_topics_list, true, true) . "
! AND ft.user_id = $user_id
$sql_extra
ORDER BY t.topic_last_post_time DESC";
$result = $db->sql_query($sql);
+
while ($row = $db->sql_fetchrow($result))
{
! $unread_topics_list[$row['topic_id']] = (int) $row['mark_time'];
}
$db->sql_freeresult($result);
***************
*** 4208,4223 ****
// 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 > {$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_extra
ORDER BY topic_last_post_time DESC";
$result = $db->sql_query_limit($sql, 1000);
while ($row = $db->sql_fetchrow($result))
{
! $unread_topics_list[$row['topic_id']] = $user->data['user_lastmark'];
}
$db->sql_freeresult($result);
}
--- 4211,4227 ----
// 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_extra
ORDER BY topic_last_post_time DESC";
$result = $db->sql_query_limit($sql, 1000);
+
while ($row = $db->sql_fetchrow($result))
{
! $unread_topics_list[$row['topic_id']] = (int) $user->data['user_lastmark'];
}
$db->sql_freeresult($result);
}
|