Neue Erweiterung: Beitrag als Mail verschicken

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
msta
Mitglied
Beiträge: 20
Registriert: 09.05.2016 11:24

Neue Erweiterung: Beitrag als Mail verschicken

Beitragvon msta » 10.10.2016 12:41

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?

Verschoben von Extensions in Entwicklung nach Extension Bastelstube am 10.10.2016 23:01 durch gn#36

Benutzeravatar
gn#36
Administrator
Administrator
Beiträge: 9174
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Neue Erweiterung: Beitrag als Mail verschicken

Beitragvon gn#36 » 10.10.2016 23:20

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.
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.

msta
Mitglied
Beiträge: 20
Registriert: 09.05.2016 11:24

Re: Neue Erweiterung: Beitrag als Mail verschicken

Beitragvon msta » 26.10.2016 22:52

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?

Benutzeravatar
gn#36
Administrator
Administrator
Beiträge: 9174
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Neue Erweiterung: Beitrag als Mail verschicken

Beitragvon gn#36 » 30.10.2016 19:16

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.
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.

msta
Mitglied
Beiträge: 20
Registriert: 09.05.2016 11:24

Fertig: Neue Erweiterung: Beitrag als Mail verschicken

Beitragvon msta » 07.11.2016 18:02

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

Windows-Club
Mitglied
Beiträge: 42
Registriert: 13.10.2015 08:13

Re: Neue Erweiterung: Beitrag als Mail verschicken

Beitragvon Windows-Club » 16.12.2016 10:25

Also bei mir werden keine User gefunden.

msta
Mitglied
Beiträge: 20
Registriert: 09.05.2016 11:24

Re: Neue Erweiterung: Beitrag als Mail verschicken

Beitragvon msta » 16.12.2016 11:56

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?

Windows-Club
Mitglied
Beiträge: 42
Registriert: 13.10.2015 08:13

Re: Neue Erweiterung: Beitrag als Mail verschicken

Beitragvon Windows-Club » 16.12.2016 16:29

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

msta
Mitglied
Beiträge: 20
Registriert: 09.05.2016 11:24

Re: Neue Erweiterung: Beitrag als Mail verschicken

Beitragvon msta » 16.12.2016 18:35

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...

Windows-Club
Mitglied
Beiträge: 42
Registriert: 13.10.2015 08:13

Re: Neue Erweiterung: Beitrag als Mail verschicken

Beitragvon Windows-Club » 16.12.2016 19:24

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.


Zurück zu „Extension Bastelstube“