diff options
Diffstat (limited to 'phpBB/includes/mcp')
| -rw-r--r-- | phpBB/includes/mcp/info/mcp_pm_reports.php | 6 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_forum.php | 33 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_front.php | 2 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_main.php | 4 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_post.php | 60 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_queue.php | 16 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_topic.php | 24 | 
7 files changed, 124 insertions, 21 deletions
| diff --git a/phpBB/includes/mcp/info/mcp_pm_reports.php b/phpBB/includes/mcp/info/mcp_pm_reports.php index 8670b71084..c80f3b86a3 100644 --- a/phpBB/includes/mcp/info/mcp_pm_reports.php +++ b/phpBB/includes/mcp/info/mcp_pm_reports.php @@ -20,9 +20,9 @@ class mcp_pm_reports_info  			'title'		=> 'MCP_PM_REPORTS',  			'version'	=> '1.0.0',  			'modes'		=> array( -				'pm_reports'		=> array('title' => 'MCP_PM_REPORTS_OPEN', 'auth' => 'aclf_m_report', 'cat' => array('MCP_REPORTS')), -				'pm_reports_closed'	=> array('title' => 'MCP_PM_REPORTS_CLOSED', 'auth' => 'aclf_m_report', 'cat' => array('MCP_REPORTS')), -				'pm_report_details'	=> array('title' => 'MCP_PM_REPORT_DETAILS', 'auth' => 'aclf_m_report', 'cat' => array('MCP_REPORTS')), +				'pm_reports'		=> array('title' => 'MCP_PM_REPORTS_OPEN', 'auth' => 'acl_m_pm_report', 'cat' => array('MCP_REPORTS')), +				'pm_reports_closed'	=> array('title' => 'MCP_PM_REPORTS_CLOSED', 'auth' => 'acl_m_pm_report', 'cat' => array('MCP_REPORTS')), +				'pm_report_details'	=> array('title' => 'MCP_PM_REPORT_DETAILS', 'auth' => 'acl_m_pm_report', 'cat' => array('MCP_REPORTS')),  			),  		);  	} diff --git a/phpBB/includes/mcp/mcp_forum.php b/phpBB/includes/mcp/mcp_forum.php index c18ca1aa1d..6faf0de35b 100644 --- a/phpBB/includes/mcp/mcp_forum.php +++ b/phpBB/includes/mcp/mcp_forum.php @@ -35,15 +35,6 @@ function mcp_forum_view($id, $mode, $action, $forum_info)  	// merge_topic is the quickmod action, merge_topics is the mcp_forum action, and merge_select is the mcp_topic action  	$merge_select = ($action == 'merge_select' || $action == 'merge_topic' || $action == 'merge_topics') ? true : false; -	if ($merge_select) -	{ -		// Fixes a "bug" that makes forum_view use the same ordering as topic_view -		$request->overwrite('sk', null); -		$request->overwrite('sd', null); -		$request->overwrite('sk', null, \phpbb\request\request_interface::POST); -		$request->overwrite('sd', null, \phpbb\request\request_interface::POST); -	} -  	$forum_id			= $forum_info['forum_id'];  	$start				= request_var('start', 0);  	$topic_id_list		= request_var('topic_id_list', array(0)); @@ -77,6 +68,30 @@ function mcp_forum_view($id, $mode, $action, $forum_info)  		break;  	} +	/** +	* Get some data in order to execute other actions. +	* +	* @event core.mcp_forum_view_before +	* @var	string	action				The action +	* @var	array	forum_info			Array with forum infos +	* @var	int		start				Start value +	* @var	array	topic_id_list		Array of topics ids +	* @var	array	post_id_list		Array of posts ids +	* @var	array	source_topic_ids	Array of source topics ids +	* @var	int		to_topic_id			Array of destination topics ids +	* @since 3.1.6-RC1 +	*/ +	$vars = array( +		'action', +		'forum_info', +		'start', +		'topic_id_list', +		'post_id_list', +		'source_topic_ids', +		'to_topic_id', +	); +	extract($phpbb_dispatcher->trigger_event('core.mcp_forum_view_before', compact($vars))); +  	$pagination = $phpbb_container->get('pagination');  	$selected_ids = ''; diff --git a/phpBB/includes/mcp/mcp_front.php b/phpBB/includes/mcp/mcp_front.php index 629b6fd275..cdf1abd8ff 100644 --- a/phpBB/includes/mcp/mcp_front.php +++ b/phpBB/includes/mcp/mcp_front.php @@ -274,7 +274,7 @@ function mcp_front_view($id, $mode, $action)  	}  	// Latest 5 reported PMs -	if ($module->loaded('pm_reports') && $auth->acl_getf_global('m_report')) +	if ($module->loaded('pm_reports') && $auth->acl_get('m_pm_report'))  	{  		$template->assign_var('S_SHOW_PM_REPORTS', true);  		$user->add_lang(array('ucp')); diff --git a/phpBB/includes/mcp/mcp_main.php b/phpBB/includes/mcp/mcp_main.php index 10f1a5b8c1..fc28968101 100644 --- a/phpBB/includes/mcp/mcp_main.php +++ b/phpBB/includes/mcp/mcp_main.php @@ -1144,7 +1144,7 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',  function mcp_fork_topic($topic_ids)  {  	global $auth, $user, $db, $template, $config; -	global $phpEx, $phpbb_root_path; +	global $phpEx, $phpbb_root_path, $phpbb_dispatcher;  	if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array('m_')))  	{ @@ -1222,7 +1222,7 @@ function mcp_fork_topic($topic_ids)  				}  				$error = false; -				$search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user); +				$search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);  				$search_mode = 'post';  				if ($error) diff --git a/phpBB/includes/mcp/mcp_post.php b/phpBB/includes/mcp/mcp_post.php index 1687409198..7a93f73228 100644 --- a/phpBB/includes/mcp/mcp_post.php +++ b/phpBB/includes/mcp/mcp_post.php @@ -26,6 +26,7 @@ function mcp_post_details($id, $mode, $action)  {  	global $phpEx, $phpbb_root_path, $config;  	global $template, $db, $user, $auth, $cache; +	global $phpbb_dispatcher;  	$user->add_lang('posting'); @@ -106,6 +107,21 @@ function mcp_post_details($id, $mode, $action)  			}  		break; + +		default: + +			/** +			* This event allows you to handle custom post moderation options +			* +			* @event core.mcp_post_additional_options +			* @var	string	action		Post moderation action name +			* @var	array	post_info	Information on the affected post +			* @since 3.1.5-RC1 +			*/ +			$vars = array('action', 'post_info'); +			extract($phpbb_dispatcher->trigger_event('core.mcp_post_additional_options', compact($vars))); + +		break;  	}  	// Set some vars @@ -197,7 +213,7 @@ function mcp_post_details($id, $mode, $action)  		$l_deleted_by = '';  	} -	$template->assign_vars(array( +	$mcp_post_template_data = array(  		'U_MCP_ACTION'			=> "$url&i=main&quickmod=1&mode=post_details", // Use this for mode paramaters  		'U_POST_ACTION'			=> "$url&i=$id&mode=post_details", // Use this for action parameters  		'U_APPROVE_ACTION'		=> append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&p=$post_id&f={$post_info['forum_id']}"), @@ -249,7 +265,32 @@ function mcp_post_details($id, $mode, $action)  		'U_LOOKUP_IP'			=> ($auth->acl_get('m_info', $post_info['forum_id'])) ? "$url&i=$id&mode=$mode&lookup={$post_info['poster_ip']}#ip" : '',  		'U_WHOIS'				=> ($auth->acl_get('m_info', $post_info['forum_id'])) ? append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&mode=$mode&action=whois&p=$post_id&ip={$post_info['poster_ip']}") : '', -	)); +	); + +	$s_additional_opts = false; + +	/** +	* Event to add/modify MCP post template data +	* +	* @event core.mcp_post_template_data +	* @var	array	post_info					Array with the post information +	* @var	array	mcp_post_template_data		Array with the MCP post template data +	* @var	array	attachments					Array with the post attachments, if any +	* @var	bool	s_additional_opts			Must be set to true in extension if additional options are presented in MCP post panel +	* @since 3.1.5-RC1 +	*/ +	$vars = array( +		'post_info', +		'mcp_post_template_data', +		'attachments', +		's_additional_opts', +	); +	extract($phpbb_dispatcher->trigger_event('core.mcp_post_template_data', compact($vars))); + +	$template->assign_vars($mcp_post_template_data); +	$template->assign_var('S_MCP_POST_ADDITIONAL_OPTS', $s_additional_opts); + +	unset($mcp_post_template_data);  	// Get User Notes  	$log_data = array(); @@ -420,7 +461,7 @@ function mcp_post_details($id, $mode, $action)  */  function change_poster(&$post_info, $userdata)  { -	global $auth, $db, $config, $phpbb_root_path, $phpEx, $user; +	global $auth, $db, $config, $phpbb_root_path, $phpEx, $user, $phpbb_dispatcher;  	if (empty($userdata) || $userdata['user_id'] == $post_info['user_id'])  	{ @@ -497,7 +538,7 @@ function change_poster(&$post_info, $userdata)  	{  		// We do some additional checks in the module to ensure it can actually be utilised  		$error = false; -		$search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user); +		$search = new $search_type($error, $phpbb_root_path, $phpEx, $auth, $config, $db, $user, $phpbb_dispatcher);  		if (!$error && method_exists($search, 'destroy_cache'))  		{ @@ -518,6 +559,17 @@ function change_poster(&$post_info, $userdata)  	$post_info = $post_info[$post_id]; +	/** +	* This event allows you to perform additional tasks after changing a post's poster +	* +	* @event core.mcp_change_poster_after +	* @var	array	userdata	Information on a post's new poster +	* @var	array	post_info	Information on the affected post +	* @since 3.1.6-RC1 +	*/ +	$vars = array('userdata', 'post_info'); +	extract($phpbb_dispatcher->trigger_event('core.mcp_change_poster_after', compact($vars))); +  	// Now add log entry  	add_log('mod', $post_info['forum_id'], $post_info['topic_id'], 'LOG_MCP_CHANGE_POSTER', $post_info['topic_title'], $from_username, $to_username);  } diff --git a/phpBB/includes/mcp/mcp_queue.php b/phpBB/includes/mcp/mcp_queue.php index 82c3bc9ab0..4b3e16d713 100644 --- a/phpBB/includes/mcp/mcp_queue.php +++ b/phpBB/includes/mcp/mcp_queue.php @@ -283,6 +283,7 @@ class mcp_queue  				$template->assign_vars(array(  					'S_MCP_QUEUE'			=> true,  					'U_APPROVE_ACTION'		=> append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&p=$post_id&f=$forum_id"), +					'S_CAN_DELETE_POST'		=> $auth->acl_get('m_delete', $post_info['forum_id']),  					'S_CAN_VIEWIP'			=> $auth->acl_get('m_info', $post_info['forum_id']),  					'S_POST_REPORTED'		=> $post_info['post_reported'],  					'S_POST_UNAPPROVED'		=> $post_info['post_visibility'] == ITEM_UNAPPROVED || $post_info['post_visibility'] == ITEM_REAPPROVE, @@ -404,7 +405,7 @@ class mcp_queue  				$forum_options = '<option value="0"' . (($forum_id == 0) ? ' selected="selected"' : '') . '>' . $user->lang['ALL_FORUMS'] . '</option>';  				foreach ($forum_list_approve as $row)  				{ -					$forum_options .= '<option value="' . $row['forum_id'] . '"' . (($forum_id == $row['forum_id']) ? ' selected="selected"' : '') . '>' . str_repeat('   ', $row['padding']) . $row['forum_name'] . '</option>'; +					$forum_options .= '<option value="' . $row['forum_id'] . '"' . (($forum_id == $row['forum_id']) ? ' selected="selected"' : '') . '>' . str_repeat('   ', $row['padding']) . truncate_string($row['forum_name'], 30, 255, false, $user->lang['ELLIPSIS']) . '</option>';  				}  				$sort_days = $total = 0; @@ -1130,6 +1131,11 @@ class mcp_queue  			// Build a list of posts to be disapproved and get the related topics real replies count  			foreach ($post_info as $post_id => $post_data)  			{ +				if ($mode === 'unapproved_topics' && $post_data['post_visibility'] == ITEM_APPROVED) +				{ +					continue; +				} +  				$post_disapprove_list[$post_id] = $post_data['topic_id'];  				if (!isset($topic_posts_unapproved[$post_data['topic_id']]))  				{ @@ -1139,6 +1145,12 @@ class mcp_queue  				$topic_posts_unapproved[$post_data['topic_id']]++;  			} +			// Do not try to disapprove if no posts are selected +			if (empty($post_disapprove_list)) +			{ +				trigger_error('NO_POST_SELECTED'); +			} +  			// Now we build the log array  			foreach ($post_disapprove_list as $post_id => $topic_id)  			{ @@ -1240,7 +1252,7 @@ class mcp_queue  						continue;  					} -					$post_data['disapprove_reason'] = ''; +					$post_data['disapprove_reason'] = $disapprove_reason;  					if (isset($disapprove_reason_lang))  					{  						// Okay we need to get the reason from the posters language diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php index 8347830d0f..2217f8fdeb 100644 --- a/phpBB/includes/mcp/mcp_topic.php +++ b/phpBB/includes/mcp/mcp_topic.php @@ -194,6 +194,30 @@ function mcp_topic_view($id, $mode, $action)  		}  	} +	/** +	* Event to modify the post data for the MCP topic review before assigning the posts +	* +	* @event core.mcp_topic_modify_post_data +	* @var	array	attachments		List of attachments post_id => array of attachments +	* @var	int		forum_id		The forum ID we are currently in +	* @var	int		id				ID of the tab we are displaying +	* @var	string	mode			Mode of the MCP page we are displaying +	* @var	array	post_id_list	Array with post ids we are going to display +	* @var	array	rowset			Array with the posts data +	* @var	int		topic_id		The topic ID we are currently reviewing +	* @since 3.1.7-RC1 +	*/ +	$vars = array( +		'attachments', +		'forum_id', +		'id', +		'mode', +		'post_id_list', +		'rowset', +		'topic_id', +	); +	extract($phpbb_dispatcher->trigger_event('core.mcp_topic_modify_post_data', compact($vars))); +  	foreach ($rowset as $i => $row)  	{  		$message = $row['post_text']; | 
