From f4a1d4ef0297c9c23879e3eadc74f1efe2229f1e Mon Sep 17 00:00:00 2001 From: Alec Date: Thu, 24 Jan 2019 13:05:33 -0500 Subject: [PATCH] [ticket/15951] Add core.mcp_delete_topic_modify_permissions Allow modification to permissions when deleting topics This allows $check_permission to be false in the phpbb_check_ids function call PHPBB3-15951 --- phpBB/includes/mcp/mcp_main.php | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/phpBB/includes/mcp/mcp_main.php b/phpBB/includes/mcp/mcp_main.php index 0919a4bdcf..f9955cff24 100644 --- a/phpBB/includes/mcp/mcp_main.php +++ b/phpBB/includes/mcp/mcp_main.php @@ -881,16 +881,38 @@ function mcp_restore_topic($topic_ids) */ function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = '', $action = 'delete_topic') { - global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container, $phpbb_log; + global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container, $phpbb_log, $phpbb_dispatcher; - $check_permission = ($is_soft) ? 'm_softdelete' : 'm_delete'; - if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array($check_permission))) + $forum_id = $request->variable('f', 0); + $check_permission = ($is_soft) ? ['m_softdelete'] : ['m_delete']; + /** + * This event allows you to modify the current user's checked permissions when deleting a topic + * + * @event core.mcp_delete_topic_modify_permissions + * @var array topic_ids The array of topic IDs to be deleted + * @var int forum_id The current forum ID + * @var bool is_soft Boolean designating whether we're soft deleting or not + * @var string soft_delete_reason The reason we're soft deleting + * @var string action The current delete action + * @var array check_permission The array with a permission to check for, can be set to false to not check them + * @since 3.2.6-RC1 + */ + $vars = array( + 'topic_ids', + 'forum_id', + 'is_soft', + 'soft_delete_reason', + 'action', + 'check_permission', + ); + extract($phpbb_dispatcher->trigger_event('core.mcp_delete_topic_modify_permissions', compact($vars))); + + if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', $check_permission)) { return; } $redirect = $request->variable('redirect', build_url(array('action', 'quickmod'))); - $forum_id = $request->variable('f', 0); $s_hidden_fields = array( 'topic_id_list' => $topic_ids,