From b8c55291ed7ed86565be2bc651bf20eb1a9ed4dd Mon Sep 17 00:00:00 2001
From: Josh Woody <a_jelly_doughnut@phpbb.com>
Date: Thu, 17 Jun 2010 23:58:18 -0500
Subject: [feature/soft-delete] Lay the groundwork for a soft-delete feature

So far, I've added no new functionality.  The biggest change here is adjusting the DB column names to "visibility" rather than "approved".  Some things here are pretty likely to change, for example the name and location of the topic_visibility class. Happy birthday phpBB :)

PHPBB3-9657
---
 phpBB/includes/mcp/mcp_topic.php | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

(limited to 'phpBB/includes/mcp/mcp_topic.php')

diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php
index e39e553ab6..f6fd12f0c4 100644
--- a/phpBB/includes/mcp/mcp_topic.php
+++ b/phpBB/includes/mcp/mcp_topic.php
@@ -145,8 +145,8 @@ function mcp_topic_view($id, $mode, $action)
 	$sql = 'SELECT u.username, u.username_clean, u.user_colour, p.*
 		FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u
 		WHERE ' . (($action == 'reports') ? 'p.post_reported = 1 AND ' : '') . '
-			p.topic_id = ' . $topic_id . ' ' .
-			((!$auth->acl_get('m_approve', $topic_info['forum_id'])) ? ' AND p.post_approved = 1 ' : '') . '
+			p.topic_id = ' . $topic_id . '
+			AND ' .	topic_visibility::get_visibility_sql('post', $topic_info['forum_id'], 'p.') . '
 			AND p.poster_id = u.user_id ' .
 			$limit_time_sql . '
 		ORDER BY ' . $sort_order_sql;
@@ -227,7 +227,7 @@ function mcp_topic_view($id, $mode, $action)
 			parse_attachments($topic_info['forum_id'], $message, $attachments[$row['post_id']], $update_count);
 		}
 
-		if (!$row['post_approved'])
+		if ($row['post_visibility'] == ITEM_UNAPPROVED)
 		{
 			$has_unapproved_posts = true;
 		}
@@ -249,7 +249,7 @@ function mcp_topic_view($id, $mode, $action)
 			'MINI_POST_IMG'			=> ($post_unread) ? $user->img('icon_post_target_unread', 'UNREAD_POST') : $user->img('icon_post_target', 'POST'),
 
 			'S_POST_REPORTED'	=> ($row['post_reported'] && $auth->acl_get('m_report', $topic_info['forum_id'])),
-			'S_POST_UNAPPROVED'	=> (!$row['post_approved'] && $auth->acl_get('m_approve', $topic_info['forum_id'])),
+			'S_POST_UNAPPROVED'	=> ($row['post_visibility'] != ITEM_APPROVED && $auth->acl_get('m_approve', $topic_info['forum_id'])),
 			'S_CHECKED'			=> (($submitted_id_list && !in_array(intval($row['post_id']), $submitted_id_list)) || in_array(intval($row['post_id']), $checked_ids)) ? true : false,
 			'S_HAS_ATTACHMENTS'	=> (!empty($attachments[$row['post_id']])) ? true : false,
 
@@ -448,7 +448,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)
 
 			if ($sort_order_sql[0] == 'u')
 			{
-				$sql = 'SELECT p.post_id, p.forum_id, p.post_approved
+				$sql = 'SELECT p.post_id, p.forum_id, p.post_visibility
 					FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . " u
 					WHERE p.topic_id = $topic_id
 						AND p.poster_id = u.user_id
@@ -457,7 +457,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)
 			}
 			else
 			{
-				$sql = 'SELECT p.post_id, p.forum_id, p.post_approved
+				$sql = 'SELECT p.post_id, p.forum_id, p.post_visibility
 					FROM ' . POSTS_TABLE . " p
 					WHERE p.topic_id = $topic_id
 						$limit_time_sql
@@ -470,7 +470,7 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)
 			while ($row = $db->sql_fetchrow($result))
 			{
 				// If split from selected post (split_beyond), we split the unapproved items too.
-				if (!$row['post_approved'] && !$auth->acl_get('m_approve', $row['forum_id']))
+				if ($row['post_visibility'] == ITEM_UNAPPROVED && !$auth->acl_get('m_approve', $row['forum_id']))
 				{
 //					continue;
 				}
@@ -497,10 +497,10 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)
 		$icon_id = request_var('icon', 0);
 
 		$sql_ary = array(
-			'forum_id'		=> $to_forum_id,
-			'topic_title'	=> $subject,
-			'icon_id'		=> $icon_id,
-			'topic_approved'=> 1
+			'forum_id'			=> $to_forum_id,
+			'topic_title'		=> $subject,
+			'icon_id'			=> $icon_id,
+			'topic_visibility'	=> 1
 		);
 
 		$sql = 'INSERT INTO ' . TOPICS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
-- 
cgit v1.2.1


From c32d76080605f843bb23e9a608c368d4b5dc55d8 Mon Sep 17 00:00:00 2001
From: Josh Woody <a_jelly_doughnut@phpbb.com>
Date: Sun, 20 Jun 2010 15:01:26 -0500
Subject: [feature/soft-delete] I told you I was going to rename the class!

Rename topic_visibility class to phpbb_visibility. Also a bit of work to the class itself, mostly cleanup and adding the comments that I'd previously written.

PHPBB3-9657
---
 phpBB/includes/mcp/mcp_topic.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'phpBB/includes/mcp/mcp_topic.php')

diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php
index f6fd12f0c4..5c25da7a9d 100644
--- a/phpBB/includes/mcp/mcp_topic.php
+++ b/phpBB/includes/mcp/mcp_topic.php
@@ -146,7 +146,7 @@ function mcp_topic_view($id, $mode, $action)
 		FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u
 		WHERE ' . (($action == 'reports') ? 'p.post_reported = 1 AND ' : '') . '
 			p.topic_id = ' . $topic_id . '
-			AND ' .	topic_visibility::get_visibility_sql('post', $topic_info['forum_id'], 'p.') . '
+			AND ' .	phpbb_visibility::get_visibility_sql('post', $topic_info['forum_id'], 'p.') . '
 			AND p.poster_id = u.user_id ' .
 			$limit_time_sql . '
 		ORDER BY ' . $sort_order_sql;
-- 
cgit v1.2.1


From a80cfafdd91a384ba810a8ee0d43406bba955faa Mon Sep 17 00:00:00 2001
From: Josh Woody <a_jelly_doughnut@phpbb.com>
Date: Wed, 30 Jun 2010 13:38:49 -0500
Subject: [feature/soft-delete] Rename phpbb_visibility class to
 phpbb_content_visibility

Rename the class to more accurately reflect what it does.

PHPBB3-9657
---
 phpBB/includes/mcp/mcp_topic.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'phpBB/includes/mcp/mcp_topic.php')

diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php
index 5c25da7a9d..8320699a8c 100644
--- a/phpBB/includes/mcp/mcp_topic.php
+++ b/phpBB/includes/mcp/mcp_topic.php
@@ -146,7 +146,7 @@ function mcp_topic_view($id, $mode, $action)
 		FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u
 		WHERE ' . (($action == 'reports') ? 'p.post_reported = 1 AND ' : '') . '
 			p.topic_id = ' . $topic_id . '
-			AND ' .	phpbb_visibility::get_visibility_sql('post', $topic_info['forum_id'], 'p.') . '
+			AND ' .	phpbb_content_visibility::get_visibility_sql('post', $topic_info['forum_id'], 'p.') . '
 			AND p.poster_id = u.user_id ' .
 			$limit_time_sql . '
 		ORDER BY ' . $sort_order_sql;
-- 
cgit v1.2.1


From 9945561b4b58e4825fd2290ae1fbbb3d49fd3e7c Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Mon, 22 Oct 2012 11:14:00 +0200
Subject: [feature/soft-delete] Correctly calculate the number of replies
 everywhere

PHPBB3-9567
---
 phpBB/includes/mcp/mcp_topic.php | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

(limited to 'phpBB/includes/mcp/mcp_topic.php')

diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php
index 8320699a8c..0259a12ca8 100644
--- a/phpBB/includes/mcp/mcp_topic.php
+++ b/phpBB/includes/mcp/mcp_topic.php
@@ -115,14 +115,7 @@ function mcp_topic_view($id, $mode, $action)
 
 	if ($total == -1)
 	{
-		if ($auth->acl_get('m_approve', $topic_info['forum_id']))
-		{
-			$total = $topic_info['topic_replies_real'] + 1;
-		}
-		else
-		{
-			$total = $topic_info['topic_replies'] + 1;
-		}
+		$total = phpbb_content_visibility::get_count('topic_posts', $topic_info, $topic_info['forum_id']);
 	}
 
 	$posts_per_page = max(0, request_var('posts_per_page', intval($config['posts_per_page'])));
-- 
cgit v1.2.1


From f0e2d21f8c15544ba59297788cd9e59e743ddbbb Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Tue, 30 Oct 2012 21:46:04 +0100
Subject: [feature/soft-delete] Allow to soft delete posts in the MCP quick
 moderation

PHPBB3-9567
---
 phpBB/includes/mcp/mcp_topic.php | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'phpBB/includes/mcp/mcp_topic.php')

diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php
index 0259a12ca8..0d768bcce9 100644
--- a/phpBB/includes/mcp/mcp_topic.php
+++ b/phpBB/includes/mcp/mcp_topic.php
@@ -242,7 +242,8 @@ function mcp_topic_view($id, $mode, $action)
 			'MINI_POST_IMG'			=> ($post_unread) ? $user->img('icon_post_target_unread', 'UNREAD_POST') : $user->img('icon_post_target', 'POST'),
 
 			'S_POST_REPORTED'	=> ($row['post_reported'] && $auth->acl_get('m_report', $topic_info['forum_id'])),
-			'S_POST_UNAPPROVED'	=> ($row['post_visibility'] != ITEM_APPROVED && $auth->acl_get('m_approve', $topic_info['forum_id'])),
+			'S_POST_UNAPPROVED'	=> ($row['post_visibility'] == ITEM_UNAPPROVED && $auth->acl_get('m_approve', $topic_info['forum_id'])),
+			'S_POST_DELETED'	=> ($row['post_visibility'] == ITEM_DELETED && $auth->acl_get('m_approve', $topic_info['forum_id'])),
 			'S_CHECKED'			=> (($submitted_id_list && !in_array(intval($row['post_id']), $submitted_id_list)) || in_array(intval($row['post_id']), $checked_ids)) ? true : false,
 			'S_HAS_ATTACHMENTS'	=> (!empty($attachments[$row['post_id']])) ? true : false,
 
@@ -318,6 +319,7 @@ function mcp_topic_view($id, $mode, $action)
 
 		'REPORTED_IMG'		=> $user->img('icon_topic_reported', 'POST_REPORTED'),
 		'UNAPPROVED_IMG'	=> $user->img('icon_topic_unapproved', 'POST_UNAPPROVED'),
+		'DELETED_IMG'	=> $user->img('icon_topic_deleted', 'POST_DELETED'),
 		'INFO_IMG'			=> $user->img('icon_post_info', 'VIEW_INFO'),
 
 		'S_MCP_ACTION'		=> "$url&amp;i=$id&amp;mode=$mode&amp;action=$action&amp;start=$start",
-- 
cgit v1.2.1


From 18dec1026ad8cc5dea6117ca1336ca9eba41aa2a Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Wed, 31 Oct 2012 14:09:23 +0100
Subject: [feature/soft-delete] Fix restoring/approving posts with mcp
 moderation

PHPBB3-9567
---
 phpBB/includes/mcp/mcp_topic.php | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

(limited to 'phpBB/includes/mcp/mcp_topic.php')

diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php
index 0d768bcce9..3b13506862 100644
--- a/phpBB/includes/mcp/mcp_topic.php
+++ b/phpBB/includes/mcp/mcp_topic.php
@@ -84,8 +84,8 @@ function mcp_topic_view($id, $mode, $action)
 		$subject = $topic_info['topic_title'];
 	}
 
-	// Approve posts?
-	if ($action == 'approve' && $auth->acl_get('m_approve', $topic_info['forum_id']))
+	// Restore or pprove posts?
+	if (($action == 'restore' || $action == 'approve') && $auth->acl_get('m_approve', $topic_info['forum_id']))
 	{
 		include($phpbb_root_path . 'includes/mcp/mcp_queue.' . $phpEx);
 		include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
@@ -98,7 +98,7 @@ function mcp_topic_view($id, $mode, $action)
 
 		if (!$sort)
 		{
-			approve_post($post_id_list, $id, $mode);
+			mcp_queue::approve_posts($action, $post_id_list, $id, $mode);
 		}
 	}
 
@@ -175,7 +175,7 @@ function mcp_topic_view($id, $mode, $action)
 		$topic_tracking_info = get_complete_topic_tracking($topic_info['forum_id'], $topic_id);
 	}
 
-	$has_unapproved_posts = false;
+	$has_unapproved_posts = $has_deleted_posts = false;
 
 	// Grab extensions
 	$extensions = $attachments = array();
@@ -225,6 +225,11 @@ function mcp_topic_view($id, $mode, $action)
 			$has_unapproved_posts = true;
 		}
 
+		if ($row['post_visibility'] == ITEM_DELETED)
+		{
+			$has_deleted_posts = true;
+		}
+
 		$post_unread = (isset($topic_tracking_info[$topic_id]) && $row['post_time'] > $topic_tracking_info[$topic_id]) ? true : false;
 
 		$template->assign_block_vars('postrow', array(
@@ -305,7 +310,7 @@ function mcp_topic_view($id, $mode, $action)
 	{
 		phpbb_generate_template_pagination($template, $base_url, 'pagination', 'start', $total, $posts_per_page, $start);
 	}
-	
+
 	$template->assign_vars(array(
 		'TOPIC_TITLE'		=> $topic_info['topic_title'],
 		'U_VIEW_TOPIC'		=> append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $topic_info['forum_id'] . '&amp;t=' . $topic_info['topic_id']),
@@ -319,7 +324,7 @@ function mcp_topic_view($id, $mode, $action)
 
 		'REPORTED_IMG'		=> $user->img('icon_topic_reported', 'POST_REPORTED'),
 		'UNAPPROVED_IMG'	=> $user->img('icon_topic_unapproved', 'POST_UNAPPROVED'),
-		'DELETED_IMG'	=> $user->img('icon_topic_deleted', 'POST_DELETED'),
+		'DELETED_IMG'		=> $user->img('icon_topic_deleted', 'POST_DELETED'),
 		'INFO_IMG'			=> $user->img('icon_post_info', 'VIEW_INFO'),
 
 		'S_MCP_ACTION'		=> "$url&amp;i=$id&amp;mode=$mode&amp;action=$action&amp;start=$start",
@@ -328,6 +333,7 @@ function mcp_topic_view($id, $mode, $action)
 		'S_CAN_MERGE'		=> ($auth->acl_get('m_merge', $topic_info['forum_id'])) ? true : false,
 		'S_CAN_DELETE'		=> ($auth->acl_get('m_delete', $topic_info['forum_id'])) ? true : false,
 		'S_CAN_APPROVE'		=> ($has_unapproved_posts && $auth->acl_get('m_approve', $topic_info['forum_id'])) ? true : false,
+		'S_CAN_RESTORE'		=> ($has_deleted_posts && $auth->acl_get('m_approve', $topic_info['forum_id'])) ? true : false,
 		'S_CAN_LOCK'		=> ($auth->acl_get('m_lock', $topic_info['forum_id'])) ? true : false,
 		'S_CAN_REPORT'		=> ($auth->acl_get('m_report', $topic_info['forum_id'])) ? true : false,
 		'S_CAN_SYNC'		=> $auth->acl_get('m_', $topic_info['forum_id']),
-- 
cgit v1.2.1


From 269330749f1e456caf5c2e787448820449586ed4 Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Sat, 3 Nov 2012 23:37:35 +0100
Subject: [feature/soft-delete] Fix naming of soft delete (we wont use that in
 the UI)

PHPBB3-9567
---
 phpBB/includes/mcp/mcp_topic.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'phpBB/includes/mcp/mcp_topic.php')

diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php
index 3b13506862..cea5b9db8c 100644
--- a/phpBB/includes/mcp/mcp_topic.php
+++ b/phpBB/includes/mcp/mcp_topic.php
@@ -324,7 +324,7 @@ function mcp_topic_view($id, $mode, $action)
 
 		'REPORTED_IMG'		=> $user->img('icon_topic_reported', 'POST_REPORTED'),
 		'UNAPPROVED_IMG'	=> $user->img('icon_topic_unapproved', 'POST_UNAPPROVED'),
-		'DELETED_IMG'		=> $user->img('icon_topic_deleted', 'POST_DELETED'),
+		'DELETED_IMG'		=> $user->img('icon_topic_deleted', 'POST_DELETED_RESTORE'),
 		'INFO_IMG'			=> $user->img('icon_post_info', 'VIEW_INFO'),
 
 		'S_MCP_ACTION'		=> "$url&amp;i=$id&amp;mode=$mode&amp;action=$action&amp;start=$start",
-- 
cgit v1.2.1


From 9aed758c1397c31b979f4aca51249c73d21bd6f5 Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Thu, 11 Jul 2013 14:24:07 +0200
Subject: [ticket/9657] Use the service instead of the static class

PHPBB3-9657
---
 phpBB/includes/mcp/mcp_topic.php | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

(limited to 'phpBB/includes/mcp/mcp_topic.php')

diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php
index 1d2030edb1..d0e4a2e057 100644
--- a/phpBB/includes/mcp/mcp_topic.php
+++ b/phpBB/includes/mcp/mcp_topic.php
@@ -21,7 +21,7 @@ if (!defined('IN_PHPBB'))
 function mcp_topic_view($id, $mode, $action)
 {
 	global $phpEx, $phpbb_root_path, $config;
-	global $template, $db, $user, $auth, $cache;
+	global $template, $db, $user, $auth, $cache, $phpbb_container;
 
 	$url = append_sid("{$phpbb_root_path}mcp.$phpEx?" . extra_url());
 
@@ -112,10 +112,11 @@ function mcp_topic_view($id, $mode, $action)
 	mcp_sorting('viewtopic', $sort_days, $sort_key, $sort_dir, $sort_by_sql, $sort_order_sql, $total, $topic_info['forum_id'], $topic_id, $where_sql);
 
 	$limit_time_sql = ($sort_days) ? 'AND p.post_time >= ' . (time() - ($sort_days * 86400)) : '';
+	$phpbb_content_visibility = $phpbb_container->get('content.visibility');
 
 	if ($total == -1)
 	{
-		$total = phpbb_content_visibility::get_count('topic_posts', $topic_info, $topic_info['forum_id']);
+		$total = $phpbb_content_visibility->get_count('topic_posts', $topic_info, $topic_info['forum_id']);
 	}
 
 	$posts_per_page = max(0, request_var('posts_per_page', intval($config['posts_per_page'])));
@@ -139,7 +140,7 @@ function mcp_topic_view($id, $mode, $action)
 		FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u
 		WHERE ' . (($action == 'reports') ? 'p.post_reported = 1 AND ' : '') . '
 			p.topic_id = ' . $topic_id . '
-			AND ' .	phpbb_content_visibility::get_visibility_sql('post', $topic_info['forum_id'], 'p.') . '
+			AND ' .	$phpbb_content_visibility->get_visibility_sql('post', $topic_info['forum_id'], 'p.') . '
 			AND p.poster_id = u.user_id ' .
 			$limit_time_sql . '
 		ORDER BY ' . $sort_order_sql;
-- 
cgit v1.2.1