$user->data['group_id'] für user_group_table ?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

$user->data['group_id'] für user_group_table ?

Beitrag von 4seven »

Hallo,

mit

Code: Alles auswählen

$user->data['group_id']  
kann man aus der user_table die group_id des Users abfragen.

Kann man in ähnlicher Weise auch die group_id des Users aus der user_group_table abfragen?
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: $user->data['group_id'] für user_group_table ?

Beitrag von gn#36 »

Um welche group_id geht es dir denn? In der user_group Tabelle stehen alle User <-> Gruppe Verknüpfungen drin. Hier kannst du nur herausbekommen, in welchen Gruppen ein User ist und ob er group leader ist und ob er Mitgliedschaft beantragt hat (user_pending). Die Hauptgruppe steht nur in der users Tabelle drin (eben $user->data['group_id']). Siehe auch http://wiki.phpbb.com/Tables/phpbb_users und http://wiki.phpbb.com/Tables/phpbb_user_group
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: $user->data['group_id'] für user_group_table ?

Beitrag von 4seven »

Vielen Dank für die Info,

mit den Mechanismen der Abfrage der normalen User_Table - > Group_ID kenne ich mich aus. Nur trägt sich die Group_ID erst dann in die User_Group_Table ein , wenn die Gruppe (zb Gruppe 15) für den Benutzer zur Hauptgruppe geworden ist. In der User_Table dagegen steht normal immer erst Group_ID 2 drin, also reg.Benutzer, selbst wenn der Benutzer zb. schon parallel in Gruppe 15 ist. Es steht aber (scheinbar) nirgendwo verzeichnet, das er in Gruppe 15 ist. Anscheinend erst, wenn Gruppe 15 seine Hauptgruppe geworden ist. Hab mal die Datenbank durchstöbert, aber immer nur Gruppe 2 als Group-ID für den User gefunden, obwohl er parallel in Gruppe 15 ist. Hab ich was übersehen?
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: $user->data['group_id'] für user_group_table ?

Beitrag von gn#36 »

Das fände ich seltsam. Eigentlich sollte das schon in der Tabelle verzeichnet sein wenn er in einer Gruppe mitglied ist, für nichts anderes ist die Tabelle ja da.

Allerdings gibt es eine phpBB Core Funktion die man benutzen kann um die Mitgliedschaften von einem oder beliebig vielen Mitgliedern abzufragen. Siehe http://www.phpbb.de/infos/3.0/xref/nav. ... html#l3224 die Funktion heißt group_memberships und ist in der includes/functions_user.php angesiedelt.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: $user->data['group_id'] für user_group_table ?

Beitrag von 4seven »

Die Core-Funktion habe ich anfänglich für 3 meiner Mods benutzt, fand sie aber zu unflexible für mutliple Gruppen-Abfragen, so das ich auf $user->data['group_id'] umschwenkte. Dummerweise bringt diese Abfrage erstmal group_id 2 als echo zurück, selbst wenn der user in Gruppe 15 ist. Und bei meinen Datenbank-Kontrolle fand ich heraus:

User (erstmal) in (Haupt)Gruppe 2 > *logo, aber zusätzlich in Gruppe 15:

User_Table > group_id > 2
User_GroupTable > group_id > 2

User erst in Gruppe 2 *klar > und jetzt aber Haupt-Gruppe 15:

User_Table > group_id > 15
User_GroupTable > group_id > 15

Wo steht aber, bevor er als Hauptgruppe die 15 hatte, "geschrieben", das er in Gruppe 15 ist, was durch die Gruppenabfrage im ACP ja angezeigt wird?
DerPate
Mitglied
Beiträge: 157
Registriert: 12.06.2003 22:49

Re: $user->data['group_id'] für user_group_table ?

Beitrag von DerPate »

Wenn ich richtig liege, bekommst du über $user->data['group_id'] immer nur die Hauptgruppe heraus.
4seven hat geschrieben:Wo steht aber, bevor er als Hauptgruppe die 15 hatte, "geschrieben", das er in Gruppe 15 ist, was durch die Gruppenabfrage im ACP ja angezeigt wird?
Die Gruppenzugehörigkeiten stehen in der USER_GROUP_TABLE

`group_id` ist klar ... 2,15 usw...
`user_id` kann mehrfach vorkommen, je nach gruppe (2,15 usw ...)
`group_leader` ist klar
`user_pending` auch ist klar.
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: $user->data['group_id'] für user_group_table ?

Beitrag von 4seven »

Was ich meine ist, bevor ich auf
User erst in Gruppe 2 *klar > und jetzt aber Haupt-Gruppe 15:

User_Table > group_id > 15
umswitche, also noch diesen Zustand habe
User (erstmal) in (Haupt)Gruppe 2 > *logo, aber zusätzlich in Gruppe 15:

User_Table > group_id > 2
User_GroupTable > group_id > 2
..wo steht dann, das er zusätzlich in der Gruppe 15 ist? 8)
DerPate
Mitglied
Beiträge: 157
Registriert: 12.06.2003 22:49

Re: $user->data['group_id'] für user_group_table ?

Beitrag von DerPate »

4seven hat geschrieben:..wo steht dann, das er zusätzlich in der Gruppe 15 ist? 8)
Ebenfalls in der USER_GROUP_TABLE ... dachte "`user_id` kann mehrfach vorkommen, je nach gruppe (2,15 usw ...)" sei verständlich :grin:

"je nach gruppe" müsste richtigerweise "für jede Gruppe" heißen.

Bist du (user_id 2) in Gruppe 2 und 15 sollten sich dort 2 Zeilen finden ...

group_id -> 2, user_id -> 2, group_leader -> x, user_pending -> x
group_id -> 15, user_id -> 2, group_leader -> x, user_pending -> x
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Re: $user->data['group_id'] für user_group_table ?

Beitrag von 4seven »

Jetzt klingelts,

vielen Dank für die Aufklärung 8)

Erscheint also wenig zweckmäßig, in die Erlaubnis-Rechteverwaltung von Mods Gruppen einzubeziehen, die keiner Hauptgruppe entsprechen, weil ihre Mitglieder noch in 25 weiteren Gruppen sein können.

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

Re: $user->data['group_id'] für user_group_table ?

Beitrag von Helmut »

Hallo 4seven,

also die Rechte nur auf die Hauptgruppe zu beziehen, kann durchaus Probleme mit sich bringen. Nehmen wir mal an, ein User gehört der Gruppe Newsletter an, die z.B. spezielle BBCodes verwendet, ist jedoch in seiner Hauptgruppe z.B. Mod Team welche aber diese BBCodes nicht verwenden dürfen dafür aber wieder andere, dann hast du schon ein Problem.

Es gibt da von Dr.Death ein Snippet, das die Gruppenzugehörigkeit prüft. Ich habe allerdings bei mir ein anderes Snippet von Dr.Death verwendet. Das könnte für dich die passende Lösung sein.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Antworten

Zurück zu „Coding & Technik“