Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
[Plugin] Auf Änderung der Benutzergruppe reagieren
#1
Hi alle zusammen,

ich falle direkt mit der Tür ins Haus:
Wie kann ich auf das Ändern der Benutzergruppen reagieren bzw. welche Hooks muss ich dazu ansprechen?

Hintergrund:
In meinem Forum gibt es eine Benutzergruppe, für deren Mitglieder ich spezielle Daten (für externe Scripte) merken muss. Dazu habe ich versteckte Profilfelder angelegt, da diese Informationen teilweise von Admins/Mods änderbar sein sollen.
Eine dieser Informationen ist eine fortlaufende Nummer, die quasi die Reihenfolge der Aufnahme in die Gruppe festhalten soll. Ich möchte nun, dass wenn ein User zu dieser Gruppe zugewiesen wird, automatisch diese Nummer eingetragen wird, und wenn die Gruppe verlassen wird, diese auch wieder gelöscht wird.

Es geht mir nicht darum, wie diese Nummer gesetzt werden muss, sondern eher, bei welchen Hooks ich mich einklinken muss, um die Nummer entsprechend setzen zu können. Es ist ja möglich, sowohl übers ACP als auch übers UCP (Gruppenleiter) die Gruppe eines Users zu ändern, sodass ich eben alle Hooks erwischen muss.
(Blick irgendwie in der usercp.php und in den Admin-Files nicht durch, oder ich seh den Wald vor lauter Bäumen nicht ^^)


Danke für eure Antworten,
MfG Zwoetzen
Was ist der Unterschied zwischen der Politik und der Informatik?
In der Informatik ignoriert man führende Nullen...
Zitieren
#2
Der Hook, den du hierfür brauchst, heißt: "admin_user_users_edit_commit"
Dieser Hook befindet sich in der Datei: "./admin/modules/user/users.php", Zeile 761

Hier kann man nun einen einfachen Vergleich ziehen: Die Variable $user beinhaltet sämtliche Informationen des Benutzers vor dem Speichern der Änderungen und $updated_user nach dem Speichern. D.h. hier kann man einen einfachen Vergleich zwischen den usergroups ziehen und dann weitere Einträge gemäß deines Scripts erstellen.


Weitere Hooks sollten auch von Relevanz sein:
"usercp_usergroups_change_displaygroup", usercp.php, Zeile 2410
"usercp_usergroups_leave_group", usercp.php, Zeile 2436
"usercp_usergroups_join_group", usercp.php, Zeile 2493
Zitieren
#3
Vielen Dank für deine Antwort, hat mir schon sehr geholfen Smile

Habe es nun hinbekommen, dass beim ändern der Benutzergruppe im ACP die entsprechenden Werte gesetzt bzw. gelöscht werden.

Zu den Hooks im UCP:
Diese werden wohl anscheinend "nur" angesprochen, wenn der User selbst einer Gruppe beitritt bzw. verlässt. Da dies aber nicht erlaubt ist, bräuchte ich diese nicht auszuwerten, oder?
(Ja, hab ich vergessen zu erwähnen ^^)

Mir ist auch aufgefallen, dass die Gruppenleiter letztendlich in der managegroup.php die Gruppenzugehörigkeit ändern (wieso hab ich das nicht schon früher gesehen oO), da habe ich den Hook managegroup_do_manageusers_end (160) gefunden, der beim Löschen der User aus einer Gruppe aktiviert wird.
Der Hook managegroup_do_joinrequests_end (105) ist eigentlich unwichtig, da der Join Request deaktiviert ist, dh die User können sich nicht bewerben, somit spielt diese Stelle eig. keine Rolle.
Was mir aber fehlt, ist ein Hook beim Hinzufügen eines Users zu einer Gruppe: Im do_add Fall der action sehe ich keinen einzigen Hook, auf den ich zugreifen könnte oO (und einen allgemeinen Hook für die Datei am Anfang oder am Ende gibt es auch nicht).
Sehe ich das da richtig, dass ich keine Möglichkeit habe, auf das Hinzufügen eines Users zu einer Gruppe durch einen Gruppenleiter reagieren kann?


MfG Zwoetzen
Was ist der Unterschied zwischen der Politik und der Informatik?
In der Informatik ignoriert man führende Nullen...
Zitieren
#4
Hallo Zwoetzen,

Ja da hast du recht. Du müsstest selbst die Hooks hinzufügen, was ja nicht sehr viel Modifikation abverlangt. Vor allem für einen MyBB Kenner wie dich dürfte das kein Problem sein.

Ich wünsche dir weiterhin viel Erfolg mit deinem Plugin!

MfG
Manuel
Gruß Manuel
Bitte erst die Suche und die Doku benutzen.
Zitieren
#5
Hmm hast recht, es ist wohl das beste, selbst einen entsprechenden Hook an die passende Stelle einzufügen als jetzt krampfhaft zu versuchen, irgendwie über die anderen Hooks dort ranzukommen ^^

Habe mir mal das Pluginsystem angeschaut: Ehrlich gesagt hätt ich mir das komplexer und komplizierter vorgestellt. Aber anscheinend reicht ein einfaches run_hook() und das dazugehörige add_hook() aus, um einen neuen Hook zu definieren... ^^

Markiere das Thema erstmal als Erledigt, ich denke, den Rest bekomm ich auch alleine zusammen Wink

Danke für deine Antwort Smile

(03.12.2008, 20:36)Manuel schrieb: Vor allem für einen MyBB Kenner wie dich dürfte das kein Problem sein.
Danke für die Blumen Big Grin
Was ist der Unterschied zwischen der Politik und der Informatik?
In der Informatik ignoriert man führende Nullen...
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Änderung der Forum-Team Anzeige bzw. der Mitgliederliste sebastian3288 2 1.888 25.03.2008, 09:29
Letzter Beitrag: Dave
Question Zeige Benutzergruppe: --Wenn verfügbar, sekundäre Benutzergruppe-- Rookie-Doo 11 4.695 30.12.2007, 13:31
Letzter Beitrag: Rookie-Doo