diff options
Diffstat (limited to 'phpBB/includes/mcp')
| -rw-r--r-- | phpBB/includes/mcp/mcp_ban.php | 112 | 
1 files changed, 87 insertions, 25 deletions
| diff --git a/phpBB/includes/mcp/mcp_ban.php b/phpBB/includes/mcp/mcp_ban.php index e6fac3b80c..1eb79ea29e 100644 --- a/phpBB/includes/mcp/mcp_ban.php +++ b/phpBB/includes/mcp/mcp_ban.php @@ -25,7 +25,7 @@ class mcp_ban  	function main($id, $mode)  	{ -		global $config, $db, $user, $auth, $template, $cache; +		global $db, $user, $auth, $template, $request, $phpbb_dispatcher;  		global $phpbb_root_path, $phpEx;  		include($phpbb_root_path . 'includes/functions_user.' . $phpEx); @@ -33,9 +33,8 @@ class mcp_ban  		// Include the admin banning interface...  		include($phpbb_root_path . 'includes/acp/acp_ban.' . $phpEx); -		$bansubmit		= (isset($_POST['bansubmit'])) ? true : false; -		$unbansubmit	= (isset($_POST['unbansubmit'])) ? true : false; -		$current_time	= time(); +		$bansubmit		= $request->is_set_post('bansubmit'); +		$unbansubmit	= $request->is_set_post('unbansubmit');  		$user->add_lang(array('acp/ban', 'acp/users'));  		$this->tpl_name = 'mcp_ban'; @@ -44,44 +43,107 @@ class mcp_ban  		if ($bansubmit)  		{  			// Grab the list of entries -			$ban				= request_var('ban', '', ($mode === 'user') ? true : false); - -			if ($mode === 'user') -			{ -				$ban = utf8_normalize_nfc($ban); -			} - -			$ban_len			= request_var('banlength', 0); -			$ban_len_other		= request_var('banlengthother', ''); -			$ban_exclude		= request_var('banexclude', 0); -			$ban_reason			= utf8_normalize_nfc(request_var('banreason', '', true)); -			$ban_give_reason	= utf8_normalize_nfc(request_var('bangivereason', '', true)); +			$ban				= $request->variable('ban', '', $mode === 'user'); +			$ban_length			= $request->variable('banlength', 0); +			$ban_length_other	= $request->variable('banlengthother', ''); +			$ban_exclude		= $request->variable('banexclude', 0); +			$ban_reason			= $request->variable('banreason', '', true); +			$ban_give_reason	= $request->variable('bangivereason', '', true);  			if ($ban)  			{  				if (confirm_box(true))  				{ -					user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason); +					$abort_ban = false; +					/** +					* Use this event to modify the ban details before the ban is performed +					* +					* @event core.mcp_ban_before +					* @var	string	mode				One of the following: user, ip, email +					* @var	string	ban					Either string or array with usernames, ips or email addresses +					* @var	int		ban_length			Ban length in minutes +					* @var	string	ban_length_other	Ban length as a date (YYYY-MM-DD) +					* @var	bool	ban_exclude			Are we banning or excluding from another ban +					* @var	string	ban_reason			Ban reason displayed to moderators +					* @var	string	ban_give_reason		Ban reason displayed to the banned user +					* @var	mixed	abort_ban			Either false, or an error message that is displayed to the user. +					*									If a string is given the bans are not issued. +					* @since 3.1.0-RC5 +					*/ +					$vars = array( +						'mode', +						'ban', +						'ban_length', +						'ban_length_other', +						'ban_exclude', +						'ban_reason', +						'ban_give_reason', +						'abort_ban', +					); +					extract($phpbb_dispatcher->trigger_event('core.mcp_ban_before', compact($vars))); + +					if ($abort_ban) +					{ +						trigger_error($abort_ban); +					} +					user_ban($mode, $ban, $ban_length, $ban_length_other, $ban_exclude, $ban_reason, $ban_give_reason); + +					/** +					* Use this event to perform actions after the ban has been performed +					* +					* @event core.mcp_ban_after +					* @var	string	mode				One of the following: user, ip, email +					* @var	string	ban					Either string or array with usernames, ips or email addresses +					* @var	int		ban_length			Ban length in minutes +					* @var	string	ban_length_other	Ban length as a date (YYYY-MM-DD) +					* @var	bool	ban_exclude			Are we banning or excluding from another ban +					* @var	string	ban_reason			Ban reason displayed to moderators +					* @var	string	ban_give_reason		Ban reason displayed to the banned user +					* @since 3.1.0-RC5 +					*/ +					$vars = array( +						'mode', +						'ban', +						'ban_length', +						'ban_length_other', +						'ban_exclude', +						'ban_reason', +						'ban_give_reason', +					); +					extract($phpbb_dispatcher->trigger_event('core.mcp_ban_after', compact($vars)));  					trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">« ' . $user->lang['BACK_TO_PREV'] . '</a>');  				}  				else  				{ -					confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array( +					$hidden_fields = array(  						'mode'				=> $mode,  						'ban'				=> $ban,  						'bansubmit'			=> true, -						'banlength'			=> $ban_len, -						'banlengthother'	=> $ban_len_other, +						'banlength'			=> $ban_length, +						'banlengthother'	=> $ban_length_other,  						'banexclude'		=> $ban_exclude,  						'banreason'			=> $ban_reason, -						'bangivereason'		=> $ban_give_reason))); +						'bangivereason'		=> $ban_give_reason, +					); + +					/** +					* Use this event to pass data from the ban form to the confirmation screen +					* +					* @event core.mcp_ban_confirm +					* @var	array	hidden_fields	Hidden fields that are passed through the confirm screen +					* @since 3.1.0-RC5 +					*/ +					$vars = array('hidden_fields'); +					extract($phpbb_dispatcher->trigger_event('core.mcp_ban_confirm', compact($vars))); + +					confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields($hidden_fields));  				}  			}  		}  		else if ($unbansubmit)  		{ -			$ban = request_var('unban', array('')); +			$ban = $request->variable('unban', array(''));  			if ($ban)  			{ @@ -157,9 +219,9 @@ class mcp_ban  		}  		// As a "service" we will check if any post id is specified and populate the username of the poster id if given -		$post_id = request_var('p', 0); -		$user_id = request_var('u', 0); -		$username = $pre_fill = false; +		$post_id = $request->variable('p', 0); +		$user_id = $request->variable('u', 0); +		$pre_fill = false;  		if ($user_id && $user_id <> ANONYMOUS)  		{ | 
