Beschränkung der erlaubten PM-Absender

 
501stGG
Benutzer
Avatar
Geschlecht: keine Angabe
Homepage: forum.501st.de
Beiträge: 44
Dabei seit: 02 / 2019
Betreff:

Beschränkung der erlaubten PM-Absender

 · 
Gepostet: 06.01.2024 - 15:33 Uhr  ·  #1
Hallo Chris und ein gutes neues Jahr,

wir haben es endlich geschafft, und neben dem Förderverein-Forum ist nun auch die zweite Instanz des Forums für die Garrison am Laufen 🙏🏼 Mein Plugin für die zusammengesetzten Gruppen (Du erinnerst Dich sicher nicht mehr ;-)) läuft so wie angedacht 🍀 und erspart jede Menge Admin-Arbeit.

Nun aber zu meiner eigentlichen Frage, bei der ich noch etwas ausholen muss. Wir unterteilen das GG-Forum in einen öffentlichen und einen internen (GG-Member-Only) Bereich, wobei die Mitglieder der GG auf den öffentlichen Bereich mit zugreifen können, aber die "Öffentlichen" nicht auf den Mitglieder-Bereich. Nun ist es so, dass User aus dem öffentlichen Bereich auch GG-Mitgliedern PMs schicken können. Das ist aber unter Umständen garnicht gewünscht und ein Mitglied möchte von "Öffentlichen" keine PMs bekommen, wohl aber von "Internen". Über das "allow_pm"-Setting kann man leider nur generell PMs unterbinden. Jetzt also die Frage: Gibt es eine Möglichkeit, wie man, sagen wir Mitglieder der gesamten Bereichtigungsgruppe "Öffentlich" als PM-Absender blocken kann?

Ich habe auch schon überlegt, wie man das als Plugin implementieren kann. Angabe der blockierten Empfängergruppen im UserCP und userspezifisch abspeichern ist kein Ding. Nur habe ich keinen Hook gefunden, wo man eine Prüfung einbinden könnte, so dass der Absender (wie im Standard) benachtichtigt wird, dass er einen Empfänger gewählt hat, der (von ihm) keine PM erhalten möchte.

Es geht hier insgesamt darum, Belästigungen, vor allem unserer weiblichen Miglieder, zu unterbinden. Eine wichtige Sache, wie ich finde.

Viele Grüße

Michael
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 38
Homepage: cback.net
Beiträge: 17615
Dabei seit: 12 / 2003
Betreff:

Re: Beschränkung der erlaubten PM-Absender

 · 
Gepostet: 06.01.2024 - 20:39 Uhr  ·  #2
Hi Michael,

das ist in der Tat ein bisschen tricky, weil es zwar einen after-Send Hook gibt, aber so gesehen keinen für die Ignoreliste (das was Du erreichen möchtest ist da ja nicht vorgesehen und die Ignorelist ist normalerweise ja schon ein solches Feature für "normale" Boards).

Du könntest es aber trotzdem erreichen, wenn Du einfach in der Haupt-Datei für die PMs die entsprechende globale Hookstelle nimmst und hier die "Submodes" selbst abprüfst, bevor die Klasse dies später tut.

In der pm.php hast Du den globalen Hook:
Code
eval($Core->hook_execute('pm', 'cback'));


Dein Plugin kann sich hier reinhängen und z.B. den $mode auf "new" oder "reply" prüfen. Das wäre der Composer.

Zusätzlich kannst Du dann mit

Code
if ( $Core->get(POST, 'pm_save', true) )


auf die Send-Action reagieren und dann vorher an diesem Hook das Script z.B. mit einer Fehlermeldung abbrechen. Die User in der Receiver List müsstest Du dann halt analog zur PrivateMessages.class.php parsen und danach prüfen, ob die in einer "gesperrten" Gruppe des Users sind oder nicht. Du kannst hier ja schauen, wie die PM Klasse das macht, das führt sonst hier zu weit das alles nochmal aufzudröseln.

Alternativ kannst Du auch auf die Add-Actions reagieren, beispielsweise das (was Du in der PM Klasse auch findest)
Code
if ( $Core->get(POST, 'add_user', true) || ($Core->get(POST, 'pm_add_user', true) && !empty($Core->get(POST, 'pm_add_user'))) )


und dann direkt beim hinzufügen eines Users zur Empfängerliste blocken. Da aber die PM Empfänger auch ggf. über einen Profil-Link ausgelöst werden können (GET => touser mit dem Int der UserID und dem $mode == new), ist die Send-Action vermutlich grundsätzlich einfacher. Das kannst Du aber letztendlich entscheiden, ob Du hier die 2 Hinzufügen-Wege abdecken möchtest oder nur einen mit durchspulen der Empfängerliste. Der Unterschied ist später dann nur für den Anwender da, ob er erst beim Senden einer fertigen PM "gestoppt" wird oder direkt schon beim Versuch, einen User hinzuzufügen.

Abbrechen kannst Du das Script dann einfach mit einer Fehlermeldung über die $Core->showmessage Methode und den Parameter Stoppen dann auf true setzen. Beispiel:

Code
$Core->showmessage('Titel', 'Text', RED, true);



Somit könntest Du Dein Vorhaben also trotzdem realisieren.

Viele Grüße,
Chris
501stGG
Benutzer
Avatar
Geschlecht: keine Angabe
Homepage: forum.501st.de
Beiträge: 44
Dabei seit: 02 / 2019
Betreff:

Re: Beschränkung der erlaubten PM-Absender

 · 
Gepostet: 06.01.2024 - 20:59 Uhr  ·  #3
Guten Abend Chris,

und danke für die gewohnt ausführliche Antwort, an einem Samstagabend 🙏🏼 Den Code hatte ich mir schon mal angeschaut, muss mich aber noch tiefer reinfuchsen. Deine Hinweise sind, wie immer Gold wert.

Ich halte Dich hier auf dem Laufenden bzw. komme zurück, wenn ich noch Fragen habe.

Weiter ein schönes WoEnde

Michael
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 38
Homepage: cback.net
Beiträge: 17615
Dabei seit: 12 / 2003
Betreff:

Re: Beschränkung der erlaubten PM-Absender

 · 
Gepostet: 08.01.2024 - 13:55 Uhr  ·  #4
Hey Michael,

vielen Dank für die netten Worte und ich hoffe, Du hattest auch ein gutes Wochenende! Freut mich, dass Dir die Tipps weiterhelfen konnten!

Ich wünsche viel Erfolg bei der Umsetzung!

Viele Grüße,
Chris
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.