diff options
Diffstat (limited to 'phpBB/includes/functions_user.php')
| -rw-r--r-- | phpBB/includes/functions_user.php | 85 | 
1 files changed, 77 insertions, 8 deletions
| diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 6b5cca8abb..930cd4625f 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1477,7 +1477,7 @@ function validate_username($username, $allowed_username = false)  	$mbstring = $pcre = false;  	// generic UTF-8 character types supported? -	if ((version_compare(PHP_VERSION, '5.1.0', '>=') || (version_compare(PHP_VERSION, '5.0.0-dev', '<=') && version_compare(PHP_VERSION, '4.4.0', '>='))) && @preg_match('/\p{L}/u', 'a') !== false) +	if (phpbb_pcre_utf8_support())  	{  		$pcre = true;  	} @@ -1614,7 +1614,7 @@ function validate_password($password)  	$pcre = $mbstring = false;  	// generic UTF-8 character types supported? -	if ((version_compare(PHP_VERSION, '5.1.0', '>=') || (version_compare(PHP_VERSION, '5.0.0-dev', '<=') && version_compare(PHP_VERSION, '4.4.0', '>='))) && @preg_match('/\p{L}/u', 'a') !== false) +	if (phpbb_pcre_utf8_support())  	{  		$upp = '\p{Lu}';  		$low = '\p{Ll}'; @@ -1759,15 +1759,15 @@ function validate_jabber($jid)  		return false;  	} -	$seperator_pos = strpos($jid, '@'); +	$separator_pos = strpos($jid, '@'); -	if ($seperator_pos === false) +	if ($separator_pos === false)  	{  		return 'WRONG_DATA';  	} -	$username = substr($jid, 0, $seperator_pos); -	$realm = substr($jid, $seperator_pos + 1); +	$username = substr($jid, 0, $separator_pos); +	$realm = substr($jid, $separator_pos + 1);  	if (strlen($username) == 0 || strlen($realm) < 3)  	{ @@ -2480,6 +2480,69 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow  	if (!sizeof($error))  	{ +		$current_legend = phpbb_group_positions::GROUP_DISABLED; +		$current_teampage = phpbb_group_positions::GROUP_DISABLED; + +		$legend = new phpbb_group_positions($db, 'legend'); +		$teampage = new phpbb_group_positions($db, 'teampage'); +		if ($group_id) +		{ +			$current_legend = $legend->get_group_value($group_id); +			$current_teampage = $teampage->get_group_value($group_id); +		} + +		if (!empty($group_attributes['group_legend'])) +		{ +			if (($group_id && ($current_legend == phpbb_group_positions::GROUP_DISABLED)) || !$group_id) +			{ +				// Old group currently not in the legend or new group, add at the end. +				$group_attributes['group_legend'] = 1 + $legend->get_group_count(); +			} +			else +			{ +				// Group stayes in the legend +				$group_attributes['group_legend'] = $current_legend; +			} +		} +		else if ($group_id && ($current_legend > phpbb_group_positions::GROUP_DISABLED)) +		{ +			// Group is removed from the legend +			$legend->delete_group($group_id, true); +			$group_attributes['group_legend'] = phpbb_group_positions::GROUP_DISABLED; +		} +		else +		{ +			$group_attributes['group_legend'] = phpbb_group_positions::GROUP_DISABLED; +		} + +		if (!empty($group_attributes['group_teampage'])) +		{ +			if (($group_id && ($current_teampage == phpbb_group_positions::GROUP_DISABLED)) || !$group_id) +			{ +				// Old group currently not on the teampage or new group, add at the end. +				$group_attributes['group_teampage'] = 1 + $teampage->get_group_count(); +			} +			else +			{ +				// Group stayes on the teampage +				$group_attributes['group_teampage'] = $current_teampage; +			} +		} +		else if ($group_id && ($current_teampage > phpbb_group_positions::GROUP_DISABLED)) +		{ +			// Group is removed from the teampage +			$teampage->delete_group($group_id, true); +			$group_attributes['group_teampage'] = phpbb_group_positions::GROUP_DISABLED; +		} +		else +		{ +			$group_attributes['group_teampage'] = phpbb_group_positions::GROUP_DISABLED; +		} + +		// Unset the objects, we don't need them anymore. +		unset($legend); +		unset($teampage); +  		$user_ary = array();  		$sql_ary = array(  			'group_name'			=> (string) $name, @@ -2704,6 +2767,14 @@ function group_delete($group_id, $group_name = false)  	}  	while ($start); +	// Delete group from legend and teampage +	$legend = new phpbb_group_positions($db, 'legend'); +	$legend->delete_group($group_id); +	unset($legend); +	$teampage = new phpbb_group_positions($db, 'teampage'); +	$teampage->delete_group($group_id); +	unset($teampage); +  	// Delete group  	$sql = 'DELETE FROM ' . GROUPS_TABLE . "  		WHERE group_id = $group_id"; @@ -3586,5 +3657,3 @@ function remove_newly_registered($user_id, $user_data = false)  	return $user_data['group_id'];  } - -?>
\ No newline at end of file | 
