From 5b64ebc11d10b66212661282a4dcfd411d038211 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 2 Oct 2012 15:34:18 +0200 Subject: [feature/soft-delete] Fix a bug in sync() and set_post_visibility() PHPBB3-9657 --- phpBB/includes/content_visibility.php | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'phpBB/includes/content_visibility.php') diff --git a/phpBB/includes/content_visibility.php b/phpBB/includes/content_visibility.php index 1aa2ad1a29..8bc67a7fd2 100644 --- a/phpBB/includes/content_visibility.php +++ b/phpBB/includes/content_visibility.php @@ -242,12 +242,6 @@ class phpbb_content_visibility { global $db; - // if we're changing the starter, we need to change the rest of the topic - if ($is_starter && !$is_latest) - { - return self::set_topic_visibility($visibility, $topic_id, $forum_id); - } - if ($post_id) { $where_sql = 'post_id = ' . (int) $post_id; @@ -274,8 +268,9 @@ class phpbb_content_visibility $db->sql_query($sql); // Sync the first/last topic information if needed - if ($is_starter || $is_latest) + if (!$is_starter && $is_latest) { + // update_post_information can only update the last post info ... if ($topic_id) { update_post_information('topic', $topic_id, false); @@ -285,6 +280,12 @@ class phpbb_content_visibility update_post_information('forum', $forum_id, false); } } + else if (($is_starter || $is_latest) && $topic_id) + { + // ... so we need to use sync, if the first post is changed. + // The forum is resynced recursive by sync() itself. + sync('topic', 'topic_id', $topic_id, true); + } } /** -- cgit v1.2.1