Seite 1 von 1

$userdata[gruppe] $userdata[rankname]

Verfasst: 22.08.2003 18:12
von Itac
Hallo,

mit welchen Befehlen bekomme ich in php (2.0.6)
den Gruppennamen und den Ranknahmen heraus?

Ich bekomme zwar mit

Code: Alles auswählen

global $userdata;
$userdata['user_rank']; 
die RankID aber nicht den Nahmen heraus.

Ein Gruß

Itac

Verfasst: 22.08.2003 18:20
von Henne
Welchen Gruppennamen und welchen Ranknamen?

Verfasst: 22.08.2003 19:27
von Gast
hallo,

ich kann ja im Admin Gruppen festlegen und denen User zuweisen.
Oder/Und ich kann als Admin Nutzern Ränge geben (Admin, Member,...
wenn sie nicht automatisch nach xx Post kommen sollen)

Ein Gruß

Verfasst: 22.08.2003 19:32
von Itac
sorry war nicht angemeldet :-o

Im Prinzip möchte ich ein paar User mehr Möglichkeiten geben
und nun muß ich herausfinden ob der User einer Gruppe
oder einen bestimmten Rank hat.

Ich möchte einen bestimmten Personenkreis mehr ermöglichen
als andere und dazu muß ich sie unterscheiden. Und das geht
soweit ich weiß über Gruppen oder über Ränge. Leider gibt es
kein $userdata['user_rank_name'] oder $userdata['user_group_name'];
...

Ein Gruß

Verfasst: 23.08.2003 19:38
von Acid
Über $userdata kannst du nur Informationen aus der "users" Tabelle holen (z.B. Name, Anzahl der Beiträge etc.). Informationen zur Gruppenangehörigkeit findest du in den Tabellen "groups" bzw. "user_group".

http://www.phpbb.de/viewtopic.php?t=9536 ..wäre vielleicht für dich nützlich.

Verfasst: 24.08.2003 17:54
von Itac
Hallo,

ja das hab ich mich schon gedacht. Ich hab mit phpMyAdmin ja Einblick in
die Tabellen bekommen. Werd mal den Link verfolgen...

danke

Verfasst: 24.08.2003 18:10
von PhilippK
Ansonsten musst du wie folgt vorgehen:
due user_id erhälst du ja aus der $uaser_data. Mit dieser musst du dann eine Abfrage der Tabelle phpbb_user_group und ggf. der user_groups machen, um die Daten der Gruppenzugehörigkeit zu ermitteln. (wenn du nur wissen willst, ob der Benutzer in der Gruppe mit der ID x ist, so reicht die eine Tabelle. Wenn du den Gruppenname oder so brauchst, brauchst du beide Tabellen).
Ähnliches gilt auch für den Rang: der ist über die phpbb_ranks auflösen (Achtung: auf die Sonderränge achten).

Gruß, Philipp

Verfasst: 25.08.2003 17:46
von Itac
Hallo,

heute mal einen Abschnitt aus meiner usercp_avatar.php
(ab Zeile 298 Original)
Ich muß da noch ein bischen probieren da php-Syntax mir neu ist....

Zuerst hole ich mir die Gruppen IDs des User

Code: Alles auswählen

global $userdata;
//Usergruppe des Users Finden
$is_in_Group = array();  //Zwischenspeicher der Gruppen in dem der User ist
$zz=-1;

		//hole Gruppen ID des Users
		$sql = "SELECT * FROM ".USER_GROUP_TABLE." WHERE user_id = ".$userdata['user_id'];
		if(!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, "Couldn't obtain user group information.", "", __LINE__, __FILE__, $sql);
		}
		while( $row = $db->sql_fetchrow($result))
		{
			$zz++;
			$is_in_Group[$zz] =$row['group_id'];  //merke GruppenID vom User

$s_categories .= '<option value="">'.$is_in_Group[$zz].'</option>';
		
		}

dann suche ich die Gruppennamen zu den IDs

Code: Alles auswählen

		
		if($zz>-1)
		{
			$sql = "SELECT * FROM ".PHPBB_GROUPS; 
			if(!$result = $db->sql_query($sql))
			{
				message_die(GENERAL_ERROR, "Couldn't obtain user group information.", "", __LINE__, __FILE__, $sql);
			}
		
		   
			while( $row = $db->sql_fetchrow($result))
			{
		  
			for ($i=0;$i<($zz+1);$i++)
				{
				
					
					if ($is_in_Group[i]=$row['group_id'])
						{
						$is_in_Group[i]=$row['group_name'];
						
						}
				}
			}		
		}

und jezt muß ich nur gucken ob ein Ordner mit G_XXXXX (xxx steht für
einen Gruppennamen, "G_" steht Ordnern für Gruppen vor)
da ist ( $AvatarOrdner=$key; ) und checken
ob der User der Gruppe angehört.

Code: Alles auswählen


	while( list($key) = each($avatar_images) )
	{
		$selected = ( $key == $category ) ? ' selected="selected"' : '';
		if( count($avatar_images[$key]) )
		{
			//--
			$AvatarOrdner=$key;						  //ordnername 
			$AvatarOrdnerT= substr($AvatarOrdner, 3); //ohne die ersten beiden Zeichen
			$test=substr($AvatarOrdner, 1, 2);        //die ersten beiden Zeichen
		
			//Wenn Ordner mit "G_" anfängt gucken ob User zugriff darauf haben soll (=in Gruppe ist)
			if ($test=="G_")
				{
				for ($i=0;$i<($zz+1);$i++)
					{
					if ($is_in_Group[i]==$AvatarOrdnerT)
							{
							$s_categories .= '<option value="' . $key . '"' . $selected . '>Not G '. ucfirst($key) . '</option>';
							}
					}
				}
				else
				{
				$s_categories .= '<option value="' . $key . '"' . $selected . '>Not G '. ucfirst($key) . '</option>';
				}

		}
	}
	
	
	$s_categories .= '</select>';
demnächt weiter, falls jemand noch etwas optimiren oder verbessern möchte...

Verfasst: 26.08.2003 16:20
von Itac
die ersten Fehler hab ich schon gefunden: i statt $i und ein paar Auswertungsfehler...

später mehr...

beta

Verfasst: 26.08.2003 16:42
von Itac
Hallo,

so jetzt scheint es zu funktionieren, wer kann und möchte bitte testen:

öffne usercp_avatar.php

suche (in Funktion display_avatar_gallery):

Code: Alles auswählen

if( empty($category) )
	{
		list($category, ) = each($avatar_images);
	}
	@reset($avatar_images);

	$s_categories = '<select name="avatarcategory">'; 

füge danach ein:

Code: Alles auswählen

global $userdata; 

//Usergruppe des Users Finden
$is_in_Group = array();  //Zwischenspeicher der Gruppen in dem der User ist
$zz=-1;

		//hole Gruppen ID des Users
		$sql = "SELECT * FROM ".USER_GROUP_TABLE." WHERE user_id = ".$userdata['user_id'];
		if(!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, "Couldn't obtain user group information.", "", __LINE__, __FILE__, $sql);
		}
		while( $row = $db->sql_fetchrow($result))
		{
			$zz++;
			$is_in_Group[$zz] =$row['group_id'];  //merke GruppenID vom User
		}
		
		//wandele GruppenID in Gruppennamen um
		if($zz>-1)
		{
			$sql = "SELECT * FROM ".PHPBB_GROUPS; 
			if(!$result = $db->sql_query($sql))
			{
				message_die(GENERAL_ERROR, "Couldn't obtain user group information.", "", __LINE__, __FILE__, $sql);
			}
		
		   
			while( $row = $db->sql_fetchrow($result))
			{
		  
			for ($i=0;$i<($zz+1);$i++)
				{
					if ($is_in_Group[$i]==$row['group_id'])
						{
						$is_in_Group[$i]=strtolower ($row['group_name']);
						}
				}
			}		
		}

	while( list($key) = each($avatar_images) )
	{
		$selected = ( $key == $category ) ? ' selected="selected"' : '';
		if( count($avatar_images[$key]) )
		{
			$AvatarOrdner=strtolower ($key);						  //ordnername 
			$AvatarOrdnerT= substr($AvatarOrdner, 2); //ohne die ersten beiden Zeichen
			$test=substr($AvatarOrdner, 0, 2);        //die ersten beiden Zeichen
		
			//Wenn Ordner mit "G_" anfängt gucken ob User zugriff darauf haben soll (=in Gruppe ist)
			if ($test=="g_")
				{
				for ($i=0;$i<($zz+1);$i++)
					{
					if ($is_in_Group[$i]==$AvatarOrdnerT)
							{
							$s_categories .= '<option value="' . $key . '"' . $selected . '>'. ucfirst($key) . '</option>';
							}
					}
				}
			else
				{
				$s_categories .= '<option value="' . $key . '"' . $selected . '>'. ucfirst($key) . '</option>';
				}
		}
	}
	$s_categories .= '</select>';

lösche folgenden Block:

Code: Alles auswählen

	while( list($key) = each($avatar_images) )
	{
		$selected = ( $key == $category ) ? ' selected="selected"' : '';
		if( count($avatar_images[$key]) )
		{
			$s_categories .= '<option value="' . $key . '"' . $selected . '>' . ucfirst($key) . '</option>';
		}
	}
	$s_categories .= '</select>';

Datei speichern und schließen.



Lege eine Gruppe an z.B. spezialuser
bastel dort ein paar User hinein.

lege unter "phpBB2\images\avatars\gallery"
einen Ordner an z.B. "g_spezialuser"
schaufele ein paar Avartarbilder hinein.

teste

Ich werd mal noch ein hinweis im phpBB 2.x Mods Forum setzen.

Alle Angaben ohne Gewähr, sprich legt Dir eine Sicherheitscopie an!
:)