From 4498c5aaebb1122b783b52a66f78d56e0ff2c63c Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 20 Dec 2012 19:23:26 +0100 Subject: [PATCH] [feature/soft-delete] Split deleting soft-deleted posts from unapproving posts PHPBB3-9657 --- phpBB/includes/mcp/mcp_main.php | 8 ++-- phpBB/includes/mcp/mcp_queue.php | 63 +++++++++++++++++++++++++++++--- 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)