Seite 1 von 2

Neue Erweiterung: Beitrag als Mail verschicken

Verfasst: 10.10.2016 12:41
von msta
Hallo,
ich habe eine Erweiterung geschrieben, die es erlaubt, vor dem Absenden eines Beitrags einzelne Mitglieder oder auch ganze Gruppen in eine Empfängerliste zu setzen. Diese bekommen den Beitrag dann als E-Mail zugeschickt. Das ist für kleine, geschlossene Foren gedacht, die zur Kommunikation eingerichtet wurden.

Ich würde diese Erweiterung gerne Veröffentlichen, aber dafür müssen noch folgende Probleme gelöst werden:
  1. Die Erweiterung übernimmt auch die Abonnements (Sonst bekommt ja jemand, der als Empfänger ausgewählt ist und das Thema/Forum abonniert hat, zwei Mails). Wie kann ich aus der Erweiterung heraus das Versenden der Abonnement-Mails vom Forum aus verhindern?
  2. Um in der Mail auf den neuen Beitrag verlinken zu können, muss die Erweiterung die URL des Forums kennen. Also diesen Teil der URL: "https://domain-des-forums/ggf-root-ordner/" wie bekomme ich diesen String am elegantesten?
  3. Die Erweiterung lauscht auf das Event submit_post_end. Wenn man vorher auf Vorschau klickt, ist die Empfängerliste wieder leer. Mit welchem Event kann ich auf das Erstellen der Vorschau lauschen, um die Liste weiterzugeben?

Re: Neue Erweiterung: Beitrag als Mail verschicken

Verfasst: 10.10.2016 23:20
von gn#36
Zu deiner ersten Frage: Der Versand wird in der includes/functions_posting.php ab ca. Zeile 2320 durchgeführt. An der Stelle lässt sich das aber nicht wirklich verhindern. Stattdessen gibt es aber in der Methode add_notifications ein Event, in das du eingreifen kannst: core.notification_manager_add_notifications in der phpbb/notification/manager.php. Hier kannst du direkt die zu benachrichtigenden User beeinflussen. In dem Event gehen aber alle Notifications durch deine Hände, also musst du gut aufpassen, dass du nicht die falschen filterst und vor allem möglichst früh die Verarbeitung abbrichst, wenn es um einen falschen Benachrichtigungstyp geht. Welche Namen du verarbeiten musst siehst du in der includes/functions_posting.php, dort werden die Nachrichten, die abgesendet werden ja alle aufgelistet.

Zweite Frage: generate_board_url() ist dein Freund.

Was die Eventsuche angeht: Schau doch einfach mal in die entsprechende Datei und suche einfach gezielt nach @event. Das ist in jedem Kommentar vor einem Event drin. Für deine dritte Frage lässt sich z.B. direkt das erste Event in der posting.php nutzen, andere gehen vermutlich auch.

Re: Neue Erweiterung: Beitrag als Mail verschicken

Verfasst: 26.10.2016 22:52
von msta
Vielen Dank, ich konnte alle genannten Probleme lösen :)

Habe aber noch was vergessen:
  1. Ich brauche noch die Antwort-Adresse, die man im Admin-Bereich unter Allgemein → Client-Kommunikation → Board E-Mails → Kontakt-E-Mail-Adresse einstellen kann.
  2. Es soll keine Mail an Benutzer gesendet werden, die keinen Lesezugriff auf das entsprechende Forum haben. Die Rechte sollen überprüft werden, nachdem man einen Benutzer/eine Gruppe in die Empfängerliste geschoben hat. Es sollen dann Einträge rot gefärbt werden, wenn der Benutzer/Die Gruppe kein Lesezugriff hat und Gruppen, in denen zumindest nicht alle Benutzer Zugriff haben, sollen gelb werden. Ich habe in der Datenbank keine Tabelle gefunden, die die Foren mit etwaigen Berechtigungen verknüpft. Wo werden diese Berechtigungen gespeichert?

Re: Neue Erweiterung: Beitrag als Mail verschicken

Verfasst: 30.10.2016 19:16
von gn#36
Die Adresse steht in der phpbb_config Tabelle. Du kannst mit dem Config Objekt \phpbb\config\config (@config denke ich) darauf zugreifen. Wie der Eintrag heißt weiß ich gerade nicht auswendig.

Rechte Prüfstand du mit $auth, vermutlich \phpbb\auth\auth oder sowas als Objekt. Das hat einige Methoden mit denen du auch für mehrere User gleichzeitig die rechte prüfen kannst.

Die Klassen findest du im Ordner phpbb deiner Installation in den den Namespaces entsprechenden Unterordnern.

Fertig: Neue Erweiterung: Beitrag als Mail verschicken

Verfasst: 07.11.2016 18:02
von msta
Hmm, für eine Gruppe überprüfen, ob einige Mitglieder keinen Lesezugriff haben, ist dann doch recht kompliziert. Aber:

Geschafft!
Die Erweiterung könnt ihr hier ziehen: mitjastachowiak.de/components/php/emailontopic/

Verbesserungsideen und Kritiken erwünscht! Dank an alle, die geholfen haben. Also gn#36 :D

Re: Neue Erweiterung: Beitrag als Mail verschicken

Verfasst: 16.12.2016 10:25
von Windows-Club
Also bei mir werden keine User gefunden.

Re: Neue Erweiterung: Beitrag als Mail verschicken

Verfasst: 16.12.2016 11:56
von msta
Erstmal Danke für's testen :grin:

Wie viele User hat dein Forum?
Die Uservorschläge werden dynamisch mit der Eingabe durch ein kleines JavaScript ermittelt. Kommt in der Browserkonsole eine Fehlermeldung zu Javascript?
Welcher Browser wird verwendet?

Re: Neue Erweiterung: Beitrag als Mail verschicken

Verfasst: 16.12.2016 16:29
von Windows-Club
Also ich hab ein Testforum in dem 5 User sind. Bei mir kommt bei der Eingabe eines Usernamens die Fehlermeldung
404 Not Found Not Found The requested URL meinewebseite/emailontopic/getinfo was not fond on this server. Apache Server at http://www.meinewebseite.de Port 80
Zum Einsatz kommt der IE11 und die phpBB Version 3.1.10

Re: Neue Erweiterung: Beitrag als Mail verschicken

Verfasst: 16.12.2016 18:35
von msta
Ah, ich glaube, ich sehe den Fehler: Die URL, die die User-Vorschläge ausgiebt, muss lauten https://website.de/app.php/emailontopic/getinfo?action=search&name=... Bei mir geht es auch ohne das app.php - versuch mal, ob die Adresse meinewebseite/app.php/emailontopic/getinfo?action=search&name=a erreichbar ist.

Ich habe das app.php ergänzt. Zum updaten einfach die Datei /ext/msta/emailontopic/styles/prosilver/template/event/posting_editor_options_prepend.html mit der aus dem ZIP, den ich soeben aktualisiert habe, ersetzen und im Admin-Bereich den Cache leeren.

Ansonsten: Ich teste inzwischen nicht mehr mit dem Internet Explorer, da ich den bei mit komplett deaktiviert habe. Edge ist wohl ganz OK, aber ich bin noch nicht auf Windows 10 umgestiegen. Kann also sein, dass es noch mehr Fehler gibt...

Re: Neue Erweiterung: Beitrag als Mail verschicken

Verfasst: 16.12.2016 19:24
von Windows-Club
Ja jetzt scheint es zu gehen. Mit dem Edge hab ich mich noch nicht so anfreunden können, da ich sonst auch lieber den Firefox nehme. Ich kann es bei den anderen Browsern ja mal Testen.