aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/viewforum.php
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2006-07-10 15:55:10 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2006-07-10 15:55:10 +0000
commit4f7c52e9e385041320179dcb7d27a9217a353c71 (patch)
treebcab21e9174983a19f2c6256b36435ffb56ad080 /phpBB/viewforum.php
parent0fa9103a0cacbe91404c32cddf0bcfe029423d04 (diff)
downloadforums-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.php32
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;
}