Seite 1 von 1

Gruppen - Farben + Profile Control Panel

Verfasst: 30.07.2004 12:48
von m-a-b
Hi!

ich hab den Profile Control Panel Mod installiert und würde gerne für spezielle Gruppen Farben vergeben (wie es bei Admins und Mods der fall ist).

Ich weis zwar, dass es den Color Groups mod gibt, aber der ist mir viel zu umfangreich.

hier ein ausschnit aus profilcp/functions_profile.php (des PCP mod) der für die Farbvergabe von Admin Founder , Admin, Mods und User verantwortlich ist: ( www.aev-forum.de/index.php )

Code: Alles auswählen

define( 'BOARD_ADMIN', 98 );
$admin_level = array(ADMIN_FOUNDER, ADMIN);
$level_prior = array(ADMIN_FOUNDER => 99, ADMIN => 9, MOD => 5, USER => 0);
$level_desc = array(ADMIN_FOUNDER => 'Admin_founder_online_color', ADMIN => 'Admin_online_color', MOD => 'Mod_online_color', USER => 'User_online_color');

function get_user_level($userdata)
{
	// fix a phpBB bug
	global $db;
	if ($userdata['user_level'] == MOD)
	{
		$sql = "SELECT * FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug
				WHERE ug.user_id = " . $userdata['user_id'] . "
					AND aa.group_id = ug.group_id
					AND aa.auth_mod = 1
					AND ug.user_pending = 0";
		if ( !$result = $db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not obtain moderator status', '', __LINE__, __FILE__, $sql);
		}
		if ($db->sql_numrows($result) <= 0)
		{
			$userdata['user_level'] = USER;
		}
	}

	$res = USER;
	if ( ($userdata['user_level'] == ADMIN) && ($userdata['user_id'] == 2) )
	{
		$res = ADMIN_FOUNDER;
	}
	else if ($userdata['user_level'] == ADMIN)
	{
		$res = ADMIN;
	}
	else if ($userdata['user_level'] == MOD)
	{
		$res = MOD;
	}
	else
	{
		$res = USER;
	}
	return $res;
}

function is_admin($userdata)
{
	global $admin_level;

	return in_array(get_user_level($userdata),$admin_level);
}

function get_user_level_class($user_level, $default='gen', $user=array())
{
	$ret = $default;
	if (!empty($user)) $user_level = get_user_level($user);
	switch( $user_level )
	{
			case ADMIN_FOUNDER:
				$ret = 'foundercolor';
				break;
			case ADMIN:
				$ret = 'admincolor';
				break;
			case MOD:
				$ret = 'modcolor';
				break;
			default:
				$ret = 'usercolor';
				break;
	}
	return $ret;
}
kann mir vielleicht jemand sagen, wie der Code für eine Gruppe aussehen muss, die z.B. die ID 123 besitzt (mit der ID 123 in de DB gespeichert)?:

Code: Alles auswählen

	else if ($userdata['user_level'] == Group123)
	{
		$res = Group123;
	}
wäre sehr nett, wenn mir jemand weiterhelfen könnte!

Markus :cookie:

Verfasst: 31.07.2004 21:38
von Acid
Du könntest das hier dafür benutzen.
Du machst die Änderungen an der name.php (je nachdem wie du die Datei nennst) wie in diesem Beispiel angemerkt, trägst dann die GruppenID ein und includest dann die Datei in die Datei aus der der obige Code stammt (oberhalb des Funktionsanfanges).

Code: Alles auswählen

include($phpbb_root_path . 'name.'.$phpEx);
Als weitere 'else if'-Anweisung fügst du dann folgendes bei dem obigen Code ein..

Code: Alles auswählen

   else if( $access_allowed )
   {
      $res = GROUP;
   }

..und dann noch Farbe definieren usw.

Verfasst: 04.08.2004 17:44
von m-a-b
verstehe zwar, wie du das meinst

was ist aber wenn ich mehreren Gruppen verschiedene Farben geben will?? :-?

Markus :cookie: