aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2012-12-20 19:23:26 +0100
committerJoas Schilling <nickvergessen@gmx.de>2012-12-20 19:23:26 +0100
commit4498c5aaebb1122b783b52a66f78d56e0ff2c63c (patch)
tree633bf13ae5b5a7f9c2f50cb7d6e5648939462a07
parent24e1881ea1fd4da0bdf6de8f58cf8527b9087270 (diff)
downloadforums-4498c5aaebb1122b783b52a66f78d56e0ff2c63c.tar
forums-4498c5aaebb1122b783b52a66f78d56e0ff2c63c.tar.gz
forums-4498c5aaebb1122b783b52a66f78d56e0ff2c63c.tar.bz2
forums-4498c5aaebb1122b783b52a66f78d56e0ff2c63c.tar.xz
forums-4498c5aaebb1122b783b52a66f78d56e0ff2c63c.zip
[feature/soft-delete] Split deleting soft-deleted posts from unapproving posts
PHPBB3-9657
-rw-r--r--phpBB/includes/mcp/mcp_main.php8
-rw-r--r--phpBB/includes/mcp/mcp_queue.php63
2 files changed, 61 insertions, 10 deletions
diff --git a/phpBB/includes/mcp/mcp_main.php b/phpBB/includes/mcp/mcp_main.php
index d29ecfe003..cf7c8af255 100644
--- a/phpBB/includes/mcp/mcp_main.php
+++ b/phpBB/includes/mcp/mcp_main.php
@@ -724,7 +724,7 @@ function mcp_restore_topic($topic_ids)
/**
* Delete Topics
*/
-function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = '')
+function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = '', $action = 'delete_topic')
{
global $auth, $user, $db, $phpEx, $phpbb_root_path, $request;
@@ -739,7 +739,7 @@ function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = ''
$s_hidden_fields = array(
'topic_id_list' => $topic_ids,
'f' => $forum_id,
- 'action' => 'delete_topic',
+ 'action' => $action,
'redirect' => $redirect,
);
$success_msg = '';
@@ -852,7 +852,7 @@ function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = ''
/**
* Delete Posts
*/
-function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '')
+function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '', $action = 'delete_post')
{
global $auth, $user, $db, $phpEx, $phpbb_root_path, $request;
@@ -867,7 +867,7 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '')
$s_hidden_fields = array(
'post_id_list' => $post_ids,
'f' => $forum_id,
- 'action' => 'delete_post',
+ 'action' => $action,
'redirect' => $redirect,
);
$success_msg = '';
diff --git a/phpBB/includes/mcp/mcp_queue.php b/phpBB/includes/mcp/mcp_queue.php
index dd3321e4e5..d9ec10e6da 100644
--- a/phpBB/includes/mcp/mcp_queue.php
+++ b/phpBB/includes/mcp/mcp_queue.php
@@ -66,19 +66,70 @@ class mcp_queue
break;
case 'delete':
- case 'disapprove':
- include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
-
$post_id_list = $request->variable('post_id_list', array(0));
$topic_id_list = $request->variable('topic_id_list', array(0));
if (!empty($post_id_list))
{
- self::disapprove_posts($post_id_list, 'queue', $mode);
+ if (!function_exists('mcp_delete_post'))
+ {
+ global $phpbb_root_path, $phpEx;
+ include($phpbb_root_path . 'includes/mcp/mcp_main.' . $phpEx);
+ }
+ mcp_delete_post($post_id_list, false, '', $action);
}
else if (!empty($topic_id_list))
{
- self::disapprove_topics($action, $topic_id_list, 'queue', $mode);
+ if (!function_exists('mcp_delete_topic'))
+ {
+ global $phpbb_root_path, $phpEx;
+ include($phpbb_root_path . 'includes/mcp/mcp_main.' . $phpEx);
+ }
+ mcp_delete_topic($topic_id_list, false, '', $action);
+ }
+ else
+ {
+ trigger_error('NO_POST_SELECTED');
+ }
+ break;
+
+ case 'disapprove':
+ $post_id_list = $request->variable('post_id_list', array(0));
+ $topic_id_list = $request->variable('topic_id_list', array(0));
+
+ if (!empty($topic_id_list) && $mode == 'deleted_topics')
+ {
+ if (!function_exists('mcp_delete_topics'))
+ {
+ global $phpbb_root_path, $phpEx;
+ include($phpbb_root_path . 'includes/mcp/mcp_main.' . $phpEx);
+ }
+ mcp_delete_topic($topic_id_list, false, '', 'disapprove');
+ return;
+ }
+
+ include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
+
+ if (!empty($topic_id_list))
+ {
+ $post_visibility = ($mode == 'deleted_topics') ? ITEM_DELETED : ITEM_UNAPPROVED;
+ $sql = 'SELECT post_id
+ FROM ' . POSTS_TABLE . '
+ WHERE post_visibility = ' . $post_visibility . '
+ AND ' . $db->sql_in_set('topic_id', $topic_id_list);
+ $result = $db->sql_query($sql);
+
+ $post_id_list = array();
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $post_id_list[] = (int) $row['post_id'];
+ }
+ $db->sql_freeresult($result);
+ }
+
+ if (!empty($post_id_list))
+ {
+ self::disapprove_posts($post_id_list, 'queue', $mode);
}
else
{
@@ -893,7 +944,7 @@ class mcp_queue
'redirect' => $redirect)
);
- $notify_poster = (isset($_REQUEST['notify_poster'])) ? true : false;
+ $notify_poster = $request->is_set('notify_poster');
$disapprove_reason = '';
if ($reason_id)