aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2012-10-05 13:18:06 +0200
committerJoas Schilling <nickvergessen@gmx.de>2012-10-05 13:18:06 +0200
commit92c5039af971722198ce634d719db6290d58c678 (patch)
treee457ec207ade77955512816206df2c877748bdc4 /phpBB/includes
parent42bb97a95cf57074edf2a30f1b4f417cfce81d13 (diff)
downloadforums-92c5039af971722198ce634d719db6290d58c678.tar
forums-92c5039af971722198ce634d719db6290d58c678.tar.gz
forums-92c5039af971722198ce634d719db6290d58c678.tar.bz2
forums-92c5039af971722198ce634d719db6290d58c678.tar.xz
forums-92c5039af971722198ce634d719db6290d58c678.zip
[feature/soft-delete] Allow forcing the set_visibility for all posts
PHPBB3-9567
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/content_visibility.php27
1 files changed, 15 insertions, 12 deletions
diff --git a/phpBB/includes/content_visibility.php b/phpBB/includes/content_visibility.php
index 7bcabbdfd6..4f5da25919 100644
--- a/phpBB/includes/content_visibility.php
+++ b/phpBB/includes/content_visibility.php
@@ -139,7 +139,7 @@ class phpbb_content_visibility
* @param $forum_id - int - forum ID where $topic_id resides
* @return void
*/
- static public function set_topic_visibility($visibility, $topic_id, $forum_id, $user_id, $time, $reason)
+ static public function set_topic_visibility($visibility, $topic_id, $forum_id, $user_id, $time, $reason, $force_update_all = false)
{
global $db;
@@ -148,17 +148,20 @@ class phpbb_content_visibility
return;
}
- $sql = 'SELECT topic_visibility, topic_delete_time
- FROM ' . TOPICS_TABLE . '
- WHERE topic_id = ' . (int) $topic_id;
- $result = $db->sql_query($sql);
- $original_topic_data = $db->sql_fetchrow($result);
- $db->sql_freeresult($result);
-
- if (!$original_topic_data)
+ if (!$force_update_all && $visibility == ITEM_APPROVED)
{
- // The topic does not exist...
- return;
+ $sql = 'SELECT topic_visibility, topic_delete_time
+ FROM ' . TOPICS_TABLE . '
+ WHERE topic_id = ' . (int) $topic_id;
+ $result = $db->sql_query($sql);
+ $original_topic_data = $db->sql_fetchrow($result);
+ $db->sql_freeresult($result);
+
+ if (!$original_topic_data)
+ {
+ // The topic does not exist...
+ return;
+ }
}
$data = array(
@@ -174,7 +177,7 @@ class phpbb_content_visibility
$db->sql_query($sql);
// If we're restoring a topic we only restore posts, that were soft deleted through the topic soft deletion.
- if ($original_topic_data['topic_delete_time'] && $original_topic_data['topic_visibility'] == ITEM_DELETED && $visibility == ITEM_APPROVED)
+ if (!$force_update_all && $original_topic_data['topic_delete_time'] && $original_topic_data['topic_visibility'] == ITEM_DELETED && $visibility == ITEM_APPROVED)
{
// Note, we do not set the same reason for every post.
self::set_post_visibility($visibility, false, $topic_id, $forum_id, $user_id, $time, '', true, true, $original_topic_data['topic_visibility'], $original_topic_data['topic_delete_time']);