Bitteschön.
http://www.uvena.de/patches/phpbb_dfde_forum2mail.patch
Benutzung:
Code: Alles auswählen
cd /pfad/zum/phpbb2/verzeichnis
patch -p1 </pfad/zum/patch
Der Patch ist für phpBB 2.0.21. Es wird nur die inlcudes/functions_post.php geändert.
Lizenz: GPLv2.
Zum Patch:
Man kann sicher die ein oder andere Stelle noch optimieren, aber so funktioniert es erstmal so wie ich es mir vorstelle(siehe mein letztes Posting).
Ich habe vor jede Variable, die ich selbst setze, ein f2m_ gesetzt, um nicht versehentlich schon bestehende Variablen zu überschreiben. D.h. alle anderen Variablen, die ich verwende werden von phpBB gesetzt.
Funktionsweise: Wenn ein Post in die DB geschrieben wird, wird nun auch eine Mail erstellt.
Empfänger ist beispielsweise eine Mailing Liste(die Adresse muss entsprechend im mail()-Befehl geändert werden).
Betreff setzt sich aus dem Titel des Forums, z.B. "Lob & Kritik" und dem Themennamen, z.B. "Debianforum offline Lesen" zusammen. Beispiel: "[Lob & Kritik] Debianforum offline Lesen".
Der Mailtext ist der Postingtext, Bbcode-bereinigt(TODO), der Signatur des Posters, sofern vorhanden und einer weiteren kleinen Signatur, die verdeutlicht, dass die Mail von den Forum versandt wurde.
Absender ist der Username und Emailadresse des Posters.
Der Header der Mail enthält zusätzlich eine generierte Message-Id sowie References. Damit wird gewährleistet, dass neue Themen jeweils einen neuen Thread aufziehen. Alle Antworten zu einem Thema werden als Antwort auf den ersten Post des Themas behandelt, d.h. es entsteht ein flacher Thread. Sonderfall: Wenn ein Posting editiert wird, erhält die daraus resultierende Mail als Referenz das editierte Posting, d.h. an der Stelle wird der Thread tiefer als nur eine Ebene. Anders ist das IMO nicht möglich, weil im Forum kann man Postings noch ändern, wenn aber eine Mail verschickt ist, war es das. Daher wird für die Änderung eine neue Mail verschickt und entsprechend in den Thread einsortiert.
Mal ein Beispiel:
Neues Thema: "Test" mit ein paar Antworten und das dritte Posting wurde bearbeitet:
Code: Alles auswählen
Test
|- Erste Antwort
|- Zweite Antwort
|- Dritte Antwort
|- Dritte Antwort (editiert)
|- Vierte Antwort
Jetzt fällt mir ein, für eine Mailing Liste wäre vielleicht noch ein zusätzlicher Header nötig, um das Senden an die Liste zu erlauben, da die Liste an sich dann read-only sein sollte.
Hinweis: die ganze Lösung ist nicht bi-direktional. D.h. man kann über die Liste kein Posting erstellen, sondern nur Lesen.
ToDo:
Ich habe eine Funktion strip_bbcode() hinzugefügt. Dort wird aus dem Postingtext und aus der Signatur der BBCode extrahiert, weil der in einer Mail nichts nützt. Ich habe das für
und gemacht, weil es da einfach war. Das muss noch für die restlichen Tags gemacht werden. Ich habe es aber nicht so mit regulären Ausdrücken
Hoffe ich habe nichts vergessen.
Würde mich freuen, wenn das irgendwie klappt.
Ich würde auch eine Mailing Liste inklusive Archiv bereitstellen.
Gruß
deadeye