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
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
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!
