$userdata[gruppe] $userdata[rankname]

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Gesperrt
Benutzeravatar
Itac
Mitglied
Beiträge: 19
Registriert: 22.08.2003 16:09
Wohnort: Rostock
Kontaktdaten:

$userdata[gruppe] $userdata[rankname]

Beitrag 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
Benutzeravatar
Henne
Ehemaliges Teammitglied
Beiträge: 4520
Registriert: 04.01.2002 01:00
Wohnort: Lage (Lippe)
Kontaktdaten:

Beitrag von Henne »

Welchen Gruppennamen und welchen Ranknamen?
Gast

Beitrag 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ß
Benutzeravatar
Itac
Mitglied
Beiträge: 19
Registriert: 22.08.2003 16:09
Wohnort: Rostock
Kontaktdaten:

Beitrag 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ß
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag 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.
Benutzeravatar
Itac
Mitglied
Beiträge: 19
Registriert: 22.08.2003 16:09
Wohnort: Rostock
Kontaktdaten:

Beitrag 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
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag 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
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
Itac
Mitglied
Beiträge: 19
Registriert: 22.08.2003 16:09
Wohnort: Rostock
Kontaktdaten:

Beitrag 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...
Benutzeravatar
Itac
Mitglied
Beiträge: 19
Registriert: 22.08.2003 16:09
Wohnort: Rostock
Kontaktdaten:

Beitrag von Itac »

die ersten Fehler hab ich schon gefunden: i statt $i und ein paar Auswertungsfehler...

später mehr...
Benutzeravatar
Itac
Mitglied
Beiträge: 19
Registriert: 22.08.2003 16:09
Wohnort: Rostock
Kontaktdaten:

beta

Beitrag 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!
:)
Gesperrt

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“