diff options
author | Meik Sievertsen <acydburn@phpbb.com> | 2006-07-10 15:55:10 +0000 |
---|---|---|
committer | Meik Sievertsen <acydburn@phpbb.com> | 2006-07-10 15:55:10 +0000 |
commit | 4f7c52e9e385041320179dcb7d27a9217a353c71 (patch) | |
tree | bcab21e9174983a19f2c6256b36435ffb56ad080 /phpBB/viewforum.php | |
parent | 0fa9103a0cacbe91404c32cddf0bcfe029423d04 (diff) | |
download | forums-4f7c52e9e385041320179dcb7d27a9217a353c71.tar forums-4f7c52e9e385041320179dcb7d27a9217a353c71.tar.gz forums-4f7c52e9e385041320179dcb7d27a9217a353c71.tar.bz2 forums-4f7c52e9e385041320179dcb7d27a9217a353c71.tar.xz forums-4f7c52e9e385041320179dcb7d27a9217a353c71.zip |
fix some bugs... again. :)
git-svn-id: file:///svn/phpbb/trunk@6165 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/viewforum.php')
-rw-r--r-- | phpBB/viewforum.php | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/phpBB/viewforum.php b/phpBB/viewforum.php index 0b84057784..4b7075fbf4 100644 --- a/phpBB/viewforum.php +++ b/phpBB/viewforum.php @@ -384,13 +384,43 @@ $sql_array = array( $sql = $db->sql_build_query('SELECT', $sql_array); $result = $db->sql_query_limit($sql, $sql_limit, $sql_start); +$shadow_topic_list = array(); while ($row = $db->sql_fetchrow($result)) { + if ($row['topic_status'] == ITEM_MOVED) + { + $shadow_topic_list[$row['topic_moved_id']] = $row['topic_id']; + } + $rowset[$row['topic_id']] = $row; $topic_list[] = $row['topic_id']; } $db->sql_freeresult($result); +// If we have some shadow topics, update the rowset to reflect their topic informations +if (sizeof($shadow_topic_list)) +{ + $sql = 'SELECT * + FROM ' . TOPICS_TABLE . ' + WHERE topic_id IN (' . implode(', ', array_keys($shadow_topic_list)) . ')'; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $orig_topic_id = $shadow_topic_list[$row['topic_id']]; + + // We want to retain some values + $row = array_merge($row, array( + 'topic_moved_id' => $rowset[$orig_topic_id]['topic_moved_id'], + 'topic_status' => $rowset[$orig_topic_id]['topic_status']) + ); + + $rowset[$orig_topic_id] = $row; + } + $db->sql_freeresult($result); +} +unset($shadow_topic_list); + $topic_list = ($store_reverse) ? array_merge($announcement_list, array_reverse($topic_list)) : array_merge($announcement_list, $topic_list); $topic_tracking_info = $tracking_topics = array(); @@ -406,7 +436,7 @@ if (sizeof($topic_list)) $topic_forum_list = array(); foreach ($rowset as $t_id => $row) { - $topic_forum_list[$row['forum_id']]['forum_mark_time'] = ($config['load_db_lastread']) ? $row['forum_mark_time'] : 0; + $topic_forum_list[$row['forum_id']]['forum_mark_time'] = ($config['load_db_lastread'] && $user->data['is_registered']) ? $row['forum_mark_time'] : 0; $topic_forum_list[$row['forum_id']]['topics'][] = $t_id; } |