From: Andreas F. <ba...@ph...> - 2009-07-28 14:57:16
|
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); } |