diff options
Diffstat (limited to 'phpBB/includes/functions_user.php')
| -rw-r--r-- | phpBB/includes/functions_user.php | 54 | 
1 files changed, 41 insertions, 13 deletions
| diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 6682622d94..0dd1708c55 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -143,7 +143,7 @@ function user_update_name($old_name, $new_name)  	* @event core.update_username  	* @var	string	old_name	The old username that is replaced  	* @var	string	new_name	The new username -	* @since 3.1-A1 +	* @since 3.1.0-a1  	*/  	$vars = array('old_name', 'new_name');  	extract($phpbb_dispatcher->trigger_event('core.update_username', compact($vars))); @@ -259,7 +259,7 @@ function user_add($user_row, $cp_data = false)  	*  	* @event core.user_add_modify_data  	* @var array	sql_ary		Array of data to be inserted when a user is added -	* @since 3.1-A1 +	* @since 3.1.0-a1  	*/  	$vars = array('sql_ary');  	extract($phpbb_dispatcher->trigger_event('core.user_add_modify_data', compact($vars))); @@ -386,7 +386,7 @@ function user_delete($mode, $user_ids, $retain_username = true)  	* @var	array	user_ids	IDs of the deleted user  	* @var	mixed	retain_username	True if username should be retained  	*				or false if not -	* @since 3.1-A1 +	* @since 3.1.0-a1  	*/  	$vars = array('mode', 'user_ids', 'retain_username');  	extract($phpbb_dispatcher->trigger_event('core.delete_user_before', compact($vars))); @@ -615,7 +615,7 @@ function user_delete($mode, $user_ids, $retain_username = true)  	* @var	array	user_ids	IDs of the deleted user  	* @var	mixed	retain_username	True if username should be retained  	*				or false if not -	* @since 3.1-A1 +	* @since 3.1.0-a1  	*/  	$vars = array('mode', 'user_ids', 'retain_username');  	extract($phpbb_dispatcher->trigger_event('core.delete_user_after', compact($vars))); @@ -1326,9 +1326,18 @@ function validate_data($data, $val_ary)  		{  			$function = array_shift($validate);  			array_unshift($validate, $data[$var]); -			$function_prefix = (function_exists('phpbb_validate_' . $function)) ? 'phpbb_validate_' : 'validate_'; -			if ($result = call_user_func_array($function_prefix . $function, $validate)) +			if (is_array($function)) +			{ +				$result = call_user_func_array(array($function[0], 'validate_' . $function[1]), $validate); +			} +			else +			{ +				$function_prefix = (function_exists('phpbb_validate_' . $function)) ? 'phpbb_validate_' : 'validate_'; +				$result = call_user_func_array($function_prefix . $function, $validate); +			} + +			if ($result)  			{  				// Since errors are checked later for their language file existence, we need to make sure custom errors are not adjusted.  				$error[] = (empty($user->lang[$result . '_' . strtoupper($var)])) ? $result : $result . '_' . strtoupper($var); @@ -2077,7 +2086,6 @@ function get_avatar_filename($avatar_entry)  {  	global $config; -  	if ($avatar_entry[0] === 'g')  	{  		$avatar_group = true; @@ -2504,7 +2512,7 @@ function group_delete($group_id, $group_name = false)  	* @event core.delete_group_after  	* @var	int		group_id	ID of the deleted group  	* @var	string	group_name	Name of the deleted group -	* @since 3.1-A1 +	* @since 3.1.0-a1  	*/  	$vars = array('group_id', 'group_name');  	extract($phpbb_dispatcher->trigger_event('core.delete_group_after', compact($vars))); @@ -2752,7 +2760,7 @@ function group_user_del($group_id, $user_id_ary = false, $username_ary = false,  	* @var	string	group_name		Name of the group  	* @var	array	user_id_ary		IDs of the users which are removed  	* @var	array	username_ary	names of the users which are removed -	* @since 3.1-A1 +	* @since 3.1.0-a1  	*/  	$vars = array('group_id', 'group_name', 'user_id_ary', 'username_ary');  	extract($phpbb_dispatcher->trigger_event('core.group_delete_user_before', compact($vars))); @@ -3198,7 +3206,7 @@ function group_set_user_default($group_id, $user_id_ary, $group_attributes = fal  	* @var	array	group_attributes	Group attributes which were changed  	* @var	array	update_listing		Update the list of moderators and foes  	* @var	array	sql_ary				User attributes which were changed -	* @since 3.1-A1 +	* @since 3.1.0-a1  	*/  	$vars = array('group_id', 'user_id_ary', 'group_attributes', 'update_listing', 'sql_ary');  	extract($phpbb_dispatcher->trigger_event('core.user_set_default_group', compact($vars))); @@ -3447,9 +3455,12 @@ function remove_newly_registered($user_id, $user_data = false)  *  * @param array $user_ids Array of users' ids to check for banning,  *						leave empty to get complete list of banned ids +* @param bool|int $ban_end Bool True to get users currently banned +* 						Bool False to only get permanently banned users +* 						Int Unix timestamp to get users banned until that time  * @return array	Array of banned users' ids if any, empty array otherwise  */ -function phpbb_get_banned_user_ids($user_ids = array()) +function phpbb_get_banned_user_ids($user_ids = array(), $ban_end = true)  {  	global $db; @@ -3461,9 +3472,26 @@ function phpbb_get_banned_user_ids($user_ids = array())  	$sql = 'SELECT ban_userid  		FROM ' . BANLIST_TABLE . "  		WHERE $sql_user_ids -			AND ban_exclude <> 1 -			AND (ban_end > " . time() . ' +			AND ban_exclude <> 1"; + +	if ($ban_end === true) +	{ +		// Banned currently +		$sql .= " AND (ban_end > " . time() . '  				OR ban_end = 0)'; +	} +	else if ($ban_end === false) +	{ +		// Permanently banned +		$sql .= " AND ban_end = 0"; +	} +	else +	{ +		// Banned until a specified time +		$sql .= " AND (ban_end > " . (int) $ban_end . ' +				OR ban_end = 0)'; +	} +  	$result = $db->sql_query($sql);  	while ($row = $db->sql_fetchrow($result))  	{ | 
