PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Private Nachrichten versenden



Andreas
09.08.2007, 17:27
Worum geht es hier?
Vielfach möchte man automatisch eine PN bei bestimmten Aktionen versenden (z.B. Newsletter, irgnedwelche Benachrichtigungen, etc.)
Diese Anleitung beschreibt wie man dies unter Nutzung von Standardfunktionalität erreichen kann

Und so geht es
Wie für viele andere Objekte, so gibt es auch für Private Nachrichten einen Datamanager.
Diese Klasse (vB_Datamanager_PM) sorgt dafür dass alle Eingabedaten geprüft und korrekt behandelt werden (Speicherplatz, eMail-Benachrichtigung, etc.). Darüberhinaus bietet Sie auch Einsteigspunkte für Plugins, so dass diese bei Verwendung der Klasse auch bei automatisch versandten PN funktionieren.

Beispiel
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

Falls beim senden etwas schiefgeht, so wird dies im Array errors vermekt
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

Wenn alles OK ist kann die Nachricht mit
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

gespeichert werden.

Dann wird eine neue PN an newuser mit dem Inhalt



Hallo

Ich bin ein Bot und sende dir hiermit eine automatische Nachricht.
Viel Spaß damit :)


Die Nachricht wird dabei als von PN-Bot (Userid 1234) stammend angezeigt.

$botpermissions sollte die Rechte des absendenden Benutzers enthalten.

Um die Zustellung einer Nachricht zu erzwingen (egal ob der Empfänger PN erhalten möchte oder sein Postfach voll ist) kann man dies per
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
aktivieren. Dies sollte als erstes nach dem datamanager_init()-Aufruf erfolgen.

Es könneen per $pmdm->set_info() auch weitere Optionen gesetzt werden:


forward = 1/0 falls diese Nachricht eine weitergeleiteter Nachricht ist. Standard=0
savecopy = 1/0 um eine Kopie dieser Nachricht im Postausgang des Senderszu speichern, Standard=0
receipt = 1/0 um eine Lesebestätigung anzufordern, Standard=0
parentpmid = ID der PN auf welche diese Nachricht eine Antwort darstellt


Weiterhin können über $pmdm->set() eingestellt werden:

iconid = ID des Icons welches für diese Nachricht angezeigt werden soll, Standard=0
showsignature = 0/1 Gibt an ob die Signature des Absenders angezeigt werden soll, Standard=0
showsmilie = 0/1 Gibt an ob Smilies in Grafiken umgewnadelt werden sollen oder als Text dargestellt, Standard=1


Für mehrere Empfänger kann user1;user2;useer3 verwendet werden.

Falls aktiviert, so kann in message BBCode verwendet werden.

chatpalace24
21.09.2007, 06:45
Vielen Dank. Sowas hab ich grad gesucht :)

Hoffi
21.09.2007, 10:08
Wie sieht es aus mit einer PN an eine ganze Benutzergruppe?

Surviver
21.09.2007, 15:21
Per Query ale Benutzer der Gruppe suchen, und dann set_recipients

Mr.T
31.03.2008, 18:22
Hoi,

Entschuldigt das ich so doof nachfrage, aber wie genau muss ich das machen, weil ich verstehe das ehrlich gesagt nicht, ich bin schon lange auf der suche nach eine Art "ForenBot", der User bei Geburtstagen, den neuen User, aber auch bei z.B Abo ausläufen eine PN schreibt, aber so ganz verstehen tue ich das nicht :(

Könnt mir vielleicht jemand das für "Anfänger" erklären?

Vielen Dank im Voraus.

mfg

Mr.T

Amok
17.10.2009, 02:08
Hallo,

habe da ein kleines Problem ... die pm wird nicht versendet ... hier mal ein Auszug aus dem code was fürs pm versenden wichtig ist

PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

kann da vieleicht einer helfen ?

ragtek
24.10.2009, 09:59
1. Benutz Phrasen, dann sparst du dir PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

2. Was gibtes den für Fehler?
Erstmal ersetze printf durch var_dump, da $pmdm->errors ein Array ist und probier es dann nochmal aus

Harald_T
24.10.2009, 10:20
@Ragtek: Auch hier fehlt wieder die Definition der $permissions und das presave(), evtl. liegt es schon daran?

ragtek
24.10.2009, 10:23
Ups, ja in deinem Code gefunden, hier übersehen^^.

Also hier mal ein komplett funktionierender Codesnippet:
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

ragtek
24.10.2009, 21:01
Falls es jemanden interessiert, das hier ist mal ein Entwurf einer "Wrapperklasse" zum PN's versenden:
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
So wird der benötigte Code zum PN senden verkleinert.
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Weiterer momentaner Vorteil:
Man kann auch nur Empfänger ID's mitschicken, anstatt den Namen

developr
10.08.2010, 10:04
Kann mir denn jemand erklären, warum construct_phrase nicht für den Titel/Nachricht funktioniert?

PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------