Auslesen der Gruppenzugehörigkeiten eines benutzers

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
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.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo Dave,

die Seiten befinden sich alle innerhalb des phpbb Verzeichnises, sind daher fest eingebunden. Ok, dann werde ich das über das auth() System realisieren, zumindest bei der Navigation. Bei den Themenseiten sind es im Verhältnis nur ein paar Seiten, da weis ich noch nicht genau, wie ich es dann mache.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Dave
Mitglied
Beiträge: 2085
Registriert: 25.05.2003 15:03
Wohnort: Wuppertal

Beitrag von Dave »

Neue Kategorie in den User Auth erstellen (wohl am besten mit dem Namen Homepage). Dort kannst du dann alle Berechtigungen reinpacken... Wie z.b. für die seiten usw... Um dann die rechte zu geben kannste jedem user einzelnd die rechte geben oder einer gruppe die rechte geben :wink:

MfG
Dave
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo,

bei der Navigation bin ich noch nicht richtig weiter gekommen. Ich habe in der Tabelle für die Menüpunkte auch eine Spalte in der die Gruppen ID's eingetragen sind, welcher der betreffende User sehen darf. Damit möchte ich dann schon bei der Abfrage der Menüpunkte aus der Tabelle die betreffenden Punkte ausfiltern.

Um das so machen zu können, muss ich aber schon vorher wissen, in welchen Gruppen der jeweilige User Mitglied ist. Wie bekomme ich nun eine Liste dieser Gruppen ID's?

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Dave
Mitglied
Beiträge: 2085
Registriert: 25.05.2003 15:03
Wohnort: Wuppertal

Beitrag von Dave »

Helmut hat geschrieben:Um das so machen zu können, muss ich aber schon vorher wissen, in welchen Gruppen der jeweilige User Mitglied ist. Wie bekomme ich nun eine Liste dieser Gruppen ID's?
includes/functions_user.php

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)
z.B.:

Code: Alles auswählen

group_memberships(false, 2);
MfG
Dave
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo Dave,

das mit der Funktion group_memberships habe ich mir schon angeschaut, aber das bringt mir ja kein array in der die ID's stehen.

Bei mir steht z.B. in der Tabelle in der Spalte tab_group_id für den betreffenden Menüpunkt 5,7,16, .... drinnen. Der User gehört den Gruppen 2,5,9, ... an, dann dürfte er den Menüpunkt sehen, weil er auch in der Gruppe 5 ist, welche in der Spalte genannt ist.



[EDIT]
Die Gruppen ID's des jeweiligen Users habe ich so aus der Tabelle user_group geholt:

Code: Alles auswählen

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

$nav_list = array();

$sql = 'SELECT group_id, user_id
		FROM ' . USER_GROUP_TABLE . "
		WHERE user_id = $benutzer_id
		ORDER BY user_id ASC";
$result = $db->sql_query($sql);
while ($nav_data = $db->sql_fetchrow($result))
{
	for( $i = 0; $i < count($i); $i++ )
	{				
		$nav_list[$i] = $nav_data['group_id'];			
		$ids = $nav_data['group_id'] . ',';
	}
}
$db->sql_freeresult($result);
Damit steht im Array $ids die Liste der Gruppen ID's des betreffenden Users durch ein Komma getrennt drinnen.

Wie müsste dann die Abfrage für die Datenbank aussehen, wenn bereits bei der Abfrage der Tabelle nach der Gruppenzugehörigkeit z.B. mit AND tab_group_id = $group_id gefiltert wird?


Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo,

ich habe das Problem jetzt gelöst, es ging mit $sql_array = array( ...... Die Abfrage sieht jetzt so aus:

Code: Alles auswählen

//ID des eingeloggten Users bestimmen
$benutzer_id = $user->data['user_id'];

$sql_array = array(
	'SELECT'	=> 'n.*, g.group_id, g.user_id',

	'FROM'		=> array(
		NAVIGATION_TABLE	=> 'n',
	),

	'LEFT_JOIN'	=> array(
		array(
			'FROM'	=> array(USER_GROUP_TABLE => 'g'),
			'ON'	=> "n.tab_group_id = g.group_id AND g.user_id = $benutzer_id",
		),
	),

	'WHERE'		=> "((n.subtab_1 = 0) AND (n.tab_group_id = 0) AND ($status = 0)) OR ((n.subtab_1 = 0) AND (n.tab_group_id = g.group_id) AND ($status = 0))",
	'ORDER BY'		=> "n.toptab ASC",
);
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query($sql);

while ($nav_data = $db->sql_fetchrow($result))
{
.......
Die Vorlage dazu habe ich mir aus der Datei funktions_display.php abgeschaut.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Die Anleitung dazu findet man in den Coding Guidelines:

http://area51.phpbb.com/docs/coding-guidelines.html#sql

Dort mal nach: sql_build_query(): suchen.
Bitti
Mitglied
Beiträge: 25
Registriert: 01.10.2006 21:27
Wohnort: Altenkunstadt

Beitrag von Bitti »

Dr.Death hat geschrieben:Verschoben hab ich es nicht...... aber ich hab eine Zusammenfassung dort erstellt:

Gruppenzugehörigkeiten eines Benutzers prüfen

Vielen Dank auch an alle Mitwirkende (Beta Tester)....

Kann es sein, daß dieses Snippet unter 3.0.1 nicht mehr funktioniert?
Gruß
Bitti
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Beitrag von 4seven »

Ich hab es mal bis zum Ecxess unter 3.0.0 versucht zum laufen zu bringen.
Da aber ein konkretes Beispiel fehlte, hab ichs aufgegeben.
Bitti
Mitglied
Beiträge: 25
Registriert: 01.10.2006 21:27
Wohnort: Altenkunstadt

Beitrag von Bitti »

Bitti hat geschrieben:
Dr.Death hat geschrieben:Verschoben hab ich es nicht...... aber ich hab eine Zusammenfassung dort erstellt:

Gruppenzugehörigkeiten eines Benutzers prüfen

Vielen Dank auch an alle Mitwirkende (Beta Tester)....

Kann es sein, daß dieses Snippet unter 3.0.1 nicht mehr funktioniert?
Kann mir jemand dazu was sagen ob es funktioniert?
Gruß
Bitti
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“