Gruppenzugehörigkeiten eines Benutzers prüfen

In diesem moderierten Forum werden Code-Schnipsel, die zu klein sind, um richtige Mods zu sein, abgelegt.
Snippets können über unser Kontaktformular eingereicht werden (bitte als vollständiger, Copy&Paste fähiger Beitrag).
Bei Fragen oder Problemen benutze bitte das Forum [3.0.x] Mod Support.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17401
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Gruppenzugehörigkeiten eines Benutzers prüfen

Beitrag von Dr.Death »

Benutzung der vorhandenen phpBB3 Funktion: group_memberships()

Code: Alles auswählen

/**
* Obtain either the members of a specified group, the groups the specified user is subscribed to
* or checking if a specified user is in a specified group. This function does not return pending memberships.
*
* Note: Never use this more than once... first group your users/groups
*/
function group_memberships($group_id_ary = false, $user_id_ary = false, $return_bool = false)


Damit die Funktion group_memberships() in Euren eigenen PHP Scripten funktioniert, muss die Datei includes/functions_user.php vorher geladen worden sein.

Beispiel:

Code: Alles auswählen

include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
Wir gehen nun davon aus, das die Funktion group_memberships() existent ist.

Szenario 1:
Überprüfung ob ein User in einer bestimmten Gruppe Mitglied ist:

Code: Alles auswählen

// zu überprüfende Gruppen ID ( Beispiel Gruppen ID 5 )
$gruppen_id = 5;

// zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
$benutzer_id = $user->data['user_id'];

// Nun erfolgt die eigentliche Prüfung:
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true);
Die Variable $is_in_group wird nun mit true gefüllt sein, wenn der betroffene User in der zu überprüfenden Gruppe Mitglied ist.


Szenario 2:
Überprüfung ob ein User in mehreren bestimmten Gruppen Mitglied ist:

Code: Alles auswählen

// zu überprüfende Gruppen IDs ( Beispiel Gruppen ID 5, 10, 12, 15 )
// Hinweis: Bei mehreren Gruppen muss es ein array() sein!
$gruppen_id = array(5,10,12,15);

// zu überprüfender User ( Beispiel: Der User, der diese Seite aufgerufen hat )
$benutzer_id = $user->data['user_id'];

// Nun erfolgt die eigentliche Prüfung:
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true);
Die Variable $is_in_group wird nun mit true gefüllt sein, wenn der betroffene User in einer der zu überprüfenden Gruppe Mitglied ist.


Mit der gefüllten Variable lassen sich nun Template Switche erstellen:

Code: Alles auswählen

if ($is_in_group == true) 
{ 
    // Teile dem Template System mit, das die Variable "S_IN_GROUP" den Wert TRUE bekommt 
   $template->assign_var('S_IN_GROUP', true); 
}


In Euren Template ( HTML ) Dateien kann man nun folgenden SWITCH verwenden um bestimmten Inhalt anzuzeigen oder nicht:

Code: Alles auswählen

<!-- IF S_IN_GROUP --> 
         Hier Dein HTML Code wenn der User in der richtigen Gruppe ist..... 
<!-- ELSE --> 
       Hier Dein HTML Code um den anderen Usern zu sagen, das sie nicht in der passenden Gruppe sind ;-) 
<!-- ENDIF -->
EDIT: Fehler entfernt. Ich hatte beim Funktionsaufruf "$group_id" stehen anstelle von "$gruppen_id".
Antworten

Zurück zu „[3.0.x] Snippets“