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 | 44 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_front.php | 39 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_logs.php | 2 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_main.php | 34 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_pm_reports.php | 2 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_post.php | 61 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_queue.php | 24 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_reports.php | 63 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_topic.php | 24 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_warn.php | 1 | 
11 files changed, 252 insertions, 48 deletions
| diff --git a/phpBB/includes/mcp/info/mcp_pm_reports.php b/phpBB/includes/mcp/info/mcp_pm_reports.php index 6f8b8d9937..2a57c0c49a 100644 --- a/phpBB/includes/mcp/info/mcp_pm_reports.php +++ b/phpBB/includes/mcp/info/mcp_pm_reports.php @@ -19,9 +19,9 @@ class mcp_pm_reports_info  			'filename'	=> 'mcp_pm_reports',  			'title'		=> 'MCP_PM_REPORTS',  			'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 9a280c0ea5..8237b834d6 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->variable('start', 0);  	$topic_id_list		= $request->variable('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))); +  	/* @var $pagination \phpbb\pagination */  	$pagination = $phpbb_container->get('pagination'); @@ -131,9 +146,10 @@ function mcp_forum_view($id, $mode, $action, $forum_info)  		'S_CAN_SYNC'			=> $auth->acl_get('m_', $forum_id),  		'S_CAN_APPROVE'			=> $auth->acl_get('m_approve', $forum_id),  		'S_MERGE_SELECT'		=> ($merge_select) ? true : false, -		'S_CAN_MAKE_NORMAL'		=> $auth->acl_gets('f_sticky', 'f_announce', $forum_id), +		'S_CAN_MAKE_NORMAL'		=> $auth->acl_gets('f_sticky', 'f_announce', 'f_announce_global', $forum_id),  		'S_CAN_MAKE_STICKY'		=> $auth->acl_get('f_sticky', $forum_id),  		'S_CAN_MAKE_ANNOUNCE'	=> $auth->acl_get('f_announce', $forum_id), +		'S_CAN_MAKE_ANNOUNCE_GLOBAL'	=> $auth->acl_get('f_announce_global', $forum_id),  		'U_VIEW_FORUM'			=> append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id),  		'U_VIEW_FORUM_LOGS'		=> ($auth->acl_gets('a_', 'm_', $forum_id) && $module->loaded('logs')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=logs&mode=forum_logs&f=' . $forum_id) : '', @@ -318,16 +334,20 @@ function mcp_forum_view($id, $mode, $action, $forum_info)  			));  		} +		$row_ary = $row;  		/**  		* Modify the topic data before it is assigned to the template in MCP  		*  		* @event core.mcp_view_forum_modify_topicrow -		* @var	array	row			Array with topic data +		* @var	array	row_ary		Array with topic data  		* @var	array	topic_row	Template array with topic data  		* @since 3.1.0-a1 +		* @change 3.2.0-a1 Replace row with row_ary  		*/ -		$vars = array('row', 'topic_row'); +		$vars = array('row_ary', 'topic_row');  		extract($phpbb_dispatcher->trigger_event('core.mcp_view_forum_modify_topicrow', compact($vars))); +		$row = $row_ary; +		unset($row_ary);  		$template->assign_block_vars('topicrow', $topic_row);  	} diff --git a/phpBB/includes/mcp/mcp_front.php b/phpBB/includes/mcp/mcp_front.php index ea17f55402..23a0604ccd 100644 --- a/phpBB/includes/mcp/mcp_front.php +++ b/phpBB/includes/mcp/mcp_front.php @@ -41,10 +41,27 @@ function mcp_front_view($id, $mode, $action)  		if (!empty($forum_list))  		{ -			$sql = 'SELECT COUNT(post_id) AS total -				FROM ' . POSTS_TABLE . ' -				WHERE ' . $db->sql_in_set('forum_id', $forum_list) . ' -					AND ' . $db->sql_in_set('post_visibility', array(ITEM_UNAPPROVED, ITEM_REAPPROVE)); +			$sql_ary = array( +				'SELECT' => 'COUNT(post_id) AS total', +				'FROM' => array( +						POSTS_TABLE => 'p', +					), +				'WHERE' => $db->sql_in_set('p.forum_id', $forum_list) . ' +					AND ' . $db->sql_in_set('p.post_visibility', array(ITEM_UNAPPROVED, ITEM_REAPPROVE)) +			); + +			/** +			* Allow altering the query to get the number of unapproved posts +			* +			* @event core.mcp_front_queue_unapproved_total_before +			* @var	int		sql_ary						Query to get the total number of unapproved posts +			* @var	array	forum_list					List of forums to look for unapproved posts +			* @since 3.1.5-RC1 +			*/ +			$vars = array('sql_ary', 'forum_list'); +			extract($phpbb_dispatcher->trigger_event('core.mcp_front_queue_unapproved_total_before', compact($vars))); + +			$sql = $db->sql_build_query('SELECT', $sql_ary);  			$result = $db->sql_query($sql);  			$total = (int) $db->sql_fetchfield('total');  			$db->sql_freeresult($result); @@ -157,6 +174,18 @@ function mcp_front_view($id, $mode, $action)  					AND r.pm_id = 0  					AND r.report_closed = 0  					AND ' . $db->sql_in_set('p.forum_id', $forum_list); + +			/** +			* Alter sql query to count the number of reported posts +			* +			* @event core.mcp_front_reports_count_query_before +			* @var	int		sql				The query string used to get the number of reports that exist +			* @var	array	forum_list		List of forums that contain the posts +			* @since 3.1.5-RC1 +			*/ +			$vars = array('sql', 'forum_list'); +			extract($phpbb_dispatcher->trigger_event('core.mcp_front_reports_count_query_before', compact($vars))); +  			$result = $db->sql_query($sql);  			$total = (int) $db->sql_fetchfield('total');  			$db->sql_freeresult($result); @@ -245,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_logs.php b/phpBB/includes/mcp/mcp_logs.php index 43327707b3..bf2d462801 100644 --- a/phpBB/includes/mcp/mcp_logs.php +++ b/phpBB/includes/mcp/mcp_logs.php @@ -205,7 +205,7 @@ class mcp_logs  		{  			$data = array(); -			$checks = array('viewtopic', 'viewforum'); +			$checks = array('viewpost', 'viewtopic', 'viewforum');  			foreach ($checks as $check)  			{  				if (isset($row[$check]) && $row[$check]) diff --git a/phpBB/includes/mcp/mcp_main.php b/phpBB/includes/mcp/mcp_main.php index e3fbbc0418..b0579d8995 100644 --- a/phpBB/includes/mcp/mcp_main.php +++ b/phpBB/includes/mcp/mcp_main.php @@ -226,6 +226,31 @@ class mcp_main  			break;  			default: +				if ($quickmod) +				{ +					switch ($action) +					{ +						case 'lock': +						case 'unlock': +						case 'make_announce': +						case 'make_sticky': +						case 'make_global': +						case 'make_normal': +						case 'make_onindex': +						case 'move': +						case 'fork': +						case 'delete_topic': +							trigger_error('TOPIC_NOT_EXIST'); +						break; + +						case 'lock_post': +						case 'unlock_post': +						case 'delete_post': +							trigger_error('POST_NOT_EXIST'); +						break; +					} +				} +  				trigger_error('NO_MODE', E_USER_ERROR);  			break;  		} @@ -297,6 +322,7 @@ function lock_unlock($action, $ids)  			$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_' . strtoupper($action), false, array(  				'forum_id' => $row['forum_id'],  				'topic_id' => $row['topic_id'], +				'post_id'  => isset($row['post_id']) ? $row['post_id'] : 0,  				$row['topic_title']  			));  		} @@ -337,7 +363,7 @@ function change_topic_type($action, $topic_ids)  		case 'make_global':  			$new_topic_type = POST_GLOBAL; -			$check_acl = 'f_announce'; +			$check_acl = 'f_announce_global';  			$l_new_type = (sizeof($topic_ids) == 1) ? 'MCP_MAKE_GLOBAL' : 'MCP_MAKE_GLOBALS';  		break; @@ -997,6 +1023,7 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',  			$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_SOFTDELETE_POST', false, array(  				'forum_id' => $row['forum_id'],  				'topic_id' => $row['topic_id'], +				'post_id'  => $row['post_id'],  				$row['post_subject'],  				$post_username,  				$soft_delete_reason @@ -1046,6 +1073,7 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',  			$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_DELETE_POST', false, array(  				'forum_id' => $row['forum_id'],  				'topic_id' => $row['topic_id'], +				'post_id'  => $row['post_id'],  				$row['post_subject'],  				$post_username,  				$soft_delete_reason @@ -1163,7 +1191,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, $phpbb_log, $request; +	global $phpEx, $phpbb_root_path, $phpbb_log, $request, $phpbb_dispatcher;  	if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array('m_')))  	{ @@ -1241,7 +1269,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_pm_reports.php b/phpBB/includes/mcp/mcp_pm_reports.php index cc8e48dc91..6e1d594135 100644 --- a/phpBB/includes/mcp/mcp_pm_reports.php +++ b/phpBB/includes/mcp/mcp_pm_reports.php @@ -97,7 +97,7 @@ class mcp_pm_reports  				/* @var $phpbb_notifications \phpbb\notification\manager */  				$phpbb_notifications = $phpbb_container->get('notification_manager'); -				$phpbb_notifications->mark_notifications_read_by_parent('notification.type.report_pm', $report_id, $user->data['user_id']); +				$phpbb_notifications->mark_notifications_by_parent('report_pm', $report_id, $user->data['user_id']);  				$pm_id = $report['pm_id'];  				$report_id = $report['report_id']; diff --git a/phpBB/includes/mcp/mcp_post.php b/phpBB/includes/mcp/mcp_post.php index b70dfbb514..e59f0abb04 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, $request;  	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, $phpbb_log; +	global $auth, $db, $config, $phpbb_root_path, $phpEx, $user, $phpbb_log, $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,10 +559,22 @@ 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  	$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_MCP_CHANGE_POSTER', false, array(  		'forum_id' => $post_info['forum_id'],  		'topic_id' => $post_info['topic_id'], +		'post_id'  => $post_info['post_id'],  		$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 84db205fec..132786818b 100644 --- a/phpBB/includes/mcp/mcp_queue.php +++ b/phpBB/includes/mcp/mcp_queue.php @@ -166,7 +166,7 @@ class mcp_queue  					{  						$post_id = (int) $topic_info[$topic_id]['topic_first_post_id']; -						$phpbb_notifications->mark_notifications_read('notification.type.topic_in_queue', $topic_id, $user->data['user_id']); +						$phpbb_notifications->mark_notifications('topic_in_queue', $topic_id, $user->data['user_id']);  					}  					else  					{ @@ -174,7 +174,7 @@ class mcp_queue  					}  				} -				$phpbb_notifications->mark_notifications_read('notification.type.post_in_queue', $post_id, $user->data['user_id']); +				$phpbb_notifications->mark_notifications('post_in_queue', $post_id, $user->data['user_id']);  				$post_info = phpbb_get_post_data(array($post_id), 'm_approve', true); @@ -284,6 +284,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, @@ -407,7 +408,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; @@ -678,6 +679,7 @@ class mcp_queue  				$approve_log[] = array(  					'forum_id'		=> $post_data['forum_id'],  					'topic_id'		=> $post_data['topic_id'], +					'post_id'		=> $post_id,  					'post_subject'	=> $post_data['post_subject'],  				);  			} @@ -694,6 +696,7 @@ class mcp_queue  				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_POST_' . strtoupper($action) . 'D', false, array(  					'forum_id' => $log_data['forum_id'],  					'topic_id' => $log_data['topic_id'], +					'post_id'  => $log_data['post_id'],  					$log_data['post_subject']  				));  			} @@ -738,7 +741,7 @@ class mcp_queue  					$phpbb_notifications->add_notifications(array('notification.type.quote'), $post_data);  					$phpbb_notifications->delete_notifications('notification.type.post_in_queue', $post_id); -					$phpbb_notifications->mark_notifications_read(array( +					$phpbb_notifications->mark_notifications(array(  						'notification.type.quote',  						'notification.type.bookmark',  						'notification.type.post', @@ -974,8 +977,8 @@ class mcp_queue  						), $topic_data);  					} -					$phpbb_notifications->mark_notifications_read('notification.type.quote', $topic_data['post_id'], $user->data['user_id']); -					$phpbb_notifications->mark_notifications_read('notification.type.topic', $topic_id, $user->data['user_id']); +					$phpbb_notifications->mark_notifications('quote', $topic_data['post_id'], $user->data['user_id']); +					$phpbb_notifications->mark_notifications('topic', $topic_id, $user->data['user_id']);  					if ($notify_poster)  					{ @@ -1267,7 +1270,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 @@ -1402,11 +1405,6 @@ class mcp_queue  		}  		else  		{ -			if (!function_exists('display_reasons')) -			{ -				include($phpbb_root_path . 'includes/functions_display.' . $phpEx); -			} -  			$show_notify = false;  			foreach ($post_info as $post_data) @@ -1426,7 +1424,7 @@ class mcp_queue  			$confirm_template = 'mcp_approve.html';  			if ($is_disapproving)  			{ -				display_reasons($reason_id); +				$phpbb_container->get('phpbb.report.report_reason_list_provider')->display_reasons($reason_id);  			}  			else  			{ diff --git a/phpBB/includes/mcp/mcp_reports.php b/phpBB/includes/mcp/mcp_reports.php index bcfbd25c0f..45265c89e7 100644 --- a/phpBB/includes/mcp/mcp_reports.php +++ b/phpBB/includes/mcp/mcp_reports.php @@ -74,17 +74,66 @@ class mcp_reports  				// closed reports are accessed by report id  				$report_id = $request->variable('r', 0); -				$sql = 'SELECT r.post_id, r.user_id, r.report_id, r.report_closed, report_time, r.report_text, r.reported_post_text, r.reported_post_uid, r.reported_post_bitfield, r.reported_post_enable_magic_url, r.reported_post_enable_smilies, r.reported_post_enable_bbcode, rr.reason_title, rr.reason_description, u.username, u.username_clean, u.user_colour -					FROM ' . REPORTS_TABLE . ' r, ' . REPORTS_REASONS_TABLE . ' rr, ' . USERS_TABLE . ' u -					WHERE ' . (($report_id) ? 'r.report_id = ' . $report_id : "r.post_id = $post_id") . ' +				$sql_ary = array( +					'SELECT'	=> 'r.post_id, r.user_id, r.report_id, r.report_closed, report_time, r.report_text, r.reported_post_text, r.reported_post_uid, r.reported_post_bitfield, r.reported_post_enable_magic_url, r.reported_post_enable_smilies, r.reported_post_enable_bbcode, rr.reason_title, rr.reason_description, u.username, u.username_clean, u.user_colour', + +					'FROM'		=> array( +						REPORTS_TABLE			=> 'r', +						REPORTS_REASONS_TABLE	=> 'rr', +						USERS_TABLE				=> 'u', +					), + +					'WHERE'		=> (($report_id) ? 'r.report_id = ' . $report_id : "r.post_id = $post_id") . '  						AND rr.reason_id = r.reason_id  						AND r.user_id = u.user_id -						AND r.pm_id = 0 -					ORDER BY report_closed ASC'; +						AND r.pm_id = 0', + +					'ORDER_BY'	=> 'report_closed ASC', +				); + +				/** +				* Allow changing the query to obtain the user-submitted report. +				* +				* @event core.mcp_reports_report_details_query_before +				* @var	array	sql_ary			The array in the format of the query builder with the query +				* @var	mixed	forum_id		The forum_id, the number in the f GET parameter +				* @var	int		post_id			The post_id of the report being viewed (if 0, it is meaningless) +				* @var	int		report_id		The report_id of the report being viewed +				* @since 3.1.5-RC1 +				*/ +				$vars = array( +					'sql_ary', +					'forum_id', +					'post_id', +					'report_id', +				); +				extract($phpbb_dispatcher->trigger_event('core.mcp_reports_report_details_query_before', compact($vars))); + +				$sql = $db->sql_build_query('SELECT', $sql_ary);  				$result = $db->sql_query_limit($sql, 1);  				$report = $db->sql_fetchrow($result);  				$db->sql_freeresult($result); +				/** +				* Allow changing the data obtained from the user-submitted report. +				* +				* @event core.mcp_reports_report_details_query_after +				* @var	array	sql_ary		The array in the format of the query builder with the query that had been executted +				* @var	mixed	forum_id	The forum_id, the number in the f GET parameter +				* @var	int		post_id		The post_id of the report being viewed (if 0, it is meaningless) +				* @var	int		report_id	The report_id of the report being viewed +				* @var	int		report		The query's resulting row. +				* @since 3.1.5-RC1 +				*/ +				$vars = array( +					'sql_ary', +					'forum_id', +					'post_id', +					'report_id', +					'report', +				); +				extract($phpbb_dispatcher->trigger_event('core.mcp_reports_report_details_query_after', compact($vars))); +  				if (!$report)  				{  					trigger_error('NO_REPORT'); @@ -93,7 +142,7 @@ class mcp_reports  				/* @var $phpbb_notifications \phpbb\notification\manager */  				$phpbb_notifications = $phpbb_container->get('notification_manager'); -				$phpbb_notifications->mark_notifications_read('notification.type.report_post', $post_id, $user->data['user_id']); +				$phpbb_notifications->mark_notifications('report_post', $post_id, $user->data['user_id']);  				if (!$report_id && $report['report_closed'])  				{ @@ -491,6 +540,7 @@ function close_report($report_id_list, $mode, $action, $pm = false)  	{  		$post_id_list[] = $row[$id_column];  	} +	$db->sql_freeresult($result);  	$post_id_list = array_unique($post_id_list);  	if ($pm) @@ -666,6 +716,7 @@ function close_report($report_id_list, $mode, $action, $pm = false)  				$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_REPORT_' .  strtoupper($action) . 'D', false, array(  					'forum_id' => $post_info[$report['post_id']]['forum_id'],  					'topic_id' => $post_info[$report['post_id']]['topic_id'], +					'post_id'  => $report['post_id'],  					$post_info[$report['post_id']]['post_subject']  				));  				$phpbb_notifications->delete_notifications('notification.type.report_post', $report['post_id']); diff --git a/phpBB/includes/mcp/mcp_topic.php b/phpBB/includes/mcp/mcp_topic.php index 66bcdad72c..70794312f4 100644 --- a/phpBB/includes/mcp/mcp_topic.php +++ b/phpBB/includes/mcp/mcp_topic.php @@ -196,6 +196,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']; diff --git a/phpBB/includes/mcp/mcp_warn.php b/phpBB/includes/mcp/mcp_warn.php index 970bdc6174..d4c5486ed4 100644 --- a/phpBB/includes/mcp/mcp_warn.php +++ b/phpBB/includes/mcp/mcp_warn.php @@ -589,6 +589,7 @@ function add_warning($user_row, $warning, $send_pm = true, $post_id = 0)  	$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_USER_WARNING', false, array(  		'forum_id' => $row['forum_id'],  		'topic_id' => $row['topic_id'], +		'post_id'  => $post_id,  		$user_row['username']  	));  } | 
