aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2012-10-02 15:34:18 +0200
committerJoas Schilling <nickvergessen@gmx.de>2012-10-02 15:34:18 +0200
commit5b64ebc11d10b66212661282a4dcfd411d038211 (patch)
tree151e53ef087f888fcbf953624077b69e9654c013 /phpBB/includes
parent1f8f07b9988b6c4aa83b517cfba6ff73a30e3ea3 (diff)
downloadforums-5b64ebc11d10b66212661282a4dcfd411d038211.tar
forums-5b64ebc11d10b66212661282a4dcfd411d038211.tar.gz
forums-5b64ebc11d10b66212661282a4dcfd411d038211.tar.bz2
forums-5b64ebc11d10b66212661282a4dcfd411d038211.tar.xz
forums-5b64ebc11d10b66212661282a4dcfd411d038211.zip
[feature/soft-delete] Fix a bug in sync() and set_post_visibility()
PHPBB3-9657
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/content_visibility.php15
-rw-r--r--phpBB/includes/functions_admin.php6
2 files changed, 11 insertions, 10 deletions
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);
+ }
}
/**
diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php
index 54130df935..bb8b02bbea 100644
--- a/phpBB/includes/functions_admin.php
+++ b/phpBB/includes/functions_admin.php
@@ -1908,12 +1908,12 @@ function sync($mode, $where_type = '', $where_ids = '', $resync_parents = false,
unset($delete_topics[$topic_id]);
$topic_data[$topic_id]['replies_real'] += $row['total_posts'];
- $topic_data[$topic_id]['first_post_id'] = (!$topic_data[$topic_id]['first_post_id']) ? $row['first_post_id'] : min($topic_data[$topic_id]['first_post_id'], $row['first_post_id']);
- if ($row['post_visibility'] || !$topic_data[$topic_id]['last_post_id'])
+ if ($row['post_visibility'] == ITEM_APPROVED)
{
- $topic_data[$topic_id]['replies'] = $row['total_posts'] - 1;
+ $topic_data[$topic_id]['first_post_id'] = $row['first_post_id'];
$topic_data[$topic_id]['last_post_id'] = $row['last_post_id'];
+ $topic_data[$topic_id]['replies'] = $row['total_posts'] - 1;
}
}
}