From 1d25c80a9c2aa654e99905c227bcbb9dede5d2f1 Mon Sep 17 00:00:00 2001
From: Daniel Sinn <daniel.p.sinn@gmail.com>
Date: Fri, 30 Sep 2016 15:23:17 -0400
Subject: [PATCH] [ticket/14804] Add core event to MCP after merging topics

Renamed $topic_data and defined $to_topic_data in order to avoid ambiguity
and to stop overwriting a variable.

PHPBB3-14804
---
 phpBB/includes/mcp/mcp_forum.php | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/phpBB/includes/mcp/mcp_forum.php b/phpBB/includes/mcp/mcp_forum.php
index 9573ecbe0d..b4f0c9e950 100644
--- a/phpBB/includes/mcp/mcp_forum.php
+++ b/phpBB/includes/mcp/mcp_forum.php
@@ -396,7 +396,7 @@ function mcp_resync_topics($topic_ids)
 */
 function merge_topics($forum_id, $topic_ids, $to_topic_id)
 {
-	global $db, $template, $user, $phpEx, $phpbb_root_path, $auth;
+	global $db, $template, $user, $phpEx, $phpbb_root_path, $auth, $phpbb_dispatcher;
 
 	if (!sizeof($topic_ids))
 	{
@@ -411,21 +411,21 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)
 
 	$sync_topics = array_merge($topic_ids, array($to_topic_id));
 
-	$topic_data = phpbb_get_topic_data($sync_topics, 'm_merge');
+	$all_topic_data = phpbb_get_topic_data($sync_topics, 'm_merge');
 
-	if (!sizeof($topic_data) || empty($topic_data[$to_topic_id]))
+	if (!sizeof($all_topic_data) || empty($all_topic_data[$to_topic_id]))
 	{
 		$template->assign_var('MESSAGE', $user->lang['NO_FINAL_TOPIC_SELECTED']);
 		return;
 	}
 
 	$sync_forums = array();
-	foreach ($topic_data as $data)
+	foreach ($all_topic_data as $data)
 	{
 		$sync_forums[$data['forum_id']] = $data['forum_id'];
 	}
 
-	$topic_data = $topic_data[$to_topic_id];
+	$to_topic_data = $all_topic_data[$to_topic_id];
 
 	$post_id_list	= request_var('post_id_list', array(0));
 	$start			= request_var('start', 0);
@@ -473,7 +473,7 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)
 
 	if (confirm_box(true))
 	{
-		$to_forum_id = $topic_data['forum_id'];
+		$to_forum_id = $to_topic_data['forum_id'];
 
 		move_posts($post_id_list, $to_topic_id, false);
 		add_log('mod', $to_forum_id, $to_topic_id, 'LOG_MERGE', $topic_data['topic_title']);
@@ -503,6 +503,20 @@ function merge_topics($forum_id, $topic_ids, $to_topic_id)
 		$redirect = request_var('redirect', "{$phpbb_root_path}viewtopic.$phpEx?f=$to_forum_id&amp;t=$to_topic_id");
 		$redirect = reapply_sid($redirect);
 
+		/**
+		 * Perform additional actions after merging topics.
+		 *
+		 * @event core.mcp_merge_after
+		 * @var	array	all_topic_data			The data from all topics involved in the merge
+		 * @var	int		to_topic_id				The ID of the topic into which the rest are merged
+		 * @since 3.1.10-RC1
+		 */
+		$vars = array(
+			'all_topic_data',
+			'to_topic_id',
+		);
+		extract($phpbb_dispatcher->trigger_event('core.mcp_merge_after', compact($vars)));
+
 		meta_refresh(3, $redirect);
 		trigger_error($user->lang[$success_msg] . '<br /><br />' . $return_link);
 	}