PN bei Kommentar Calendar Plugin

    PN bei Kommentar Calendar Plugin

    Gibts es eine Möglichkeit, dass Teilnehmer eines Termins eine pn erhalten wenn zu diesem Termin ein neuer Kommentar erstellt wird.
    Ohne Benachrichtung in irgendeiner Form gehen die Kommentar vollkommen unter.
    Man muss ständig den Termin öffnen um zu sehen ob jemand was dazu gepostet hat...

    Schon mal vielen Dank!

    Eagle

    Post was edited 1 time, last by “Eagel” ().

    Du bist dran Christopher, warum komtm da keine PN an ;)

    PHP Source Code

    1. <?php
    2. require_once(WCF_DIR.'lib/system/event/EventListener.class.php');
    3. require_once(WCF_DIR.'lib/data/message/pm/PMEditor.class.php');
    4. class CalendarCommentNotificationListener implements EventListener {
    5. public function execute($eventObj, $className, $eventName) {
    6. if($eventObj->object->eventID) {
    7. $post = new PMEditor($eventObj->object->eventID);
    8. $subject = 'Neuer Kommentar im Kalender';
    9. $text = 'Ein Benutzer hat einen Kommentar in Ihrem Kalendereintrag hinterlassen.';
    10. $post->create($post->recipients.$eventObj->object->userID, $post->subject.$subject, $post->text.$text, array('time' => TIME_NOW, 'userID' => WCF::getUser()->userID, 'username' => WCF::getUser()->username));
    11. }
    12. }
    13. }
    14. ?>


    XML Source Code

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com/XSD/event-listener.xsd">
    3. <import>
    4. <eventlistener>
    5. <eventclassname>CalendarEventCommentAddForm</eventclassname>
    6. <eventname>saved</eventname>
    7. <listenerclassfile>lib/system/event/listener/CalendarCommentNotificationListener.class.php</listenerclassfile>
    8. </eventlistener>
    9. </import>
    10. </data>
    Mit freundlichen Grüßen
    Sebastian S.

    Post was edited 2 times, last by “Sebastian S.” ().

    Wieso castest du die eventID als PMEditor, das sollte dann doch eher dem korrekten DatabaseObject entsprechen? Des weiteren ist die Methode "create()" statisch und auch die Methodensignatur ist komplett anders, die Klasse ist so völlig unbrauchbar.

    wcf/lib/data/message/pm/PMEditor.class.php

    PHP Source Code: 104

    1. public static function create($draft, $recipients, $blindCopies, $subject, $text, $userID, $username, $options = array(), $attachments = null, $parentPmID = 0) {
    Alexander Ebert
    Senior Developer WoltLab® GmbH


    Merkwürdig, hatte das eigentlich geändert gehabt.

    PHP Source Code

    1. <?php
    2. require_once(WCF_DIR.'lib/system/event/EventListener.class.php');
    3. require_once(WCF_DIR.'lib/data/message/pm/PMEditor.class.php');
    4. class CalendarCommentNotificationListener implements EventListener {
    5. public function execute($eventObj, $className, $eventName) {
    6. if($eventObj->object->eventID) {
    7. $post = new PMEditor($eventObj->object->userID);
    8. $subject = 'Neuer Kommentar im Kalender';
    9. $text = 'Ein Benutzer hat einen Kommentar in Ihrem Kalendereintrag hinterlassen.';
    10. $options = array('enableSmilies' => $post->enableSmilies, 'enableHtml' => $post->enableHtml, 'enableBBCodes' => $post->enableBBCodes, 'showSignature' => $post->showSignature);
    11. $parentPmID = 0;
    12. $draft = 0;
    13. $post->create($draft, $post->recipients.$eventObj->object->userID, null, $post->subject.$subject, $post->text.$text, $post->userID.WCF::getUser()->userID, $post->username.WCF::getUser()->username, $options, null, $parentPmID);
    14. }
    15. }
    16. }
    17. ?>


    Sieht das so besser aus oder habe ich deinen Beitrag falsch verstanden?
    Mit freundlichen Grüßen
    Sebastian S.

    Post was edited 1 time, last by “Sebastian S.” ().

    Du brauchst die PMEditor Klasse nicht initialisieren (kannst du auch nicht, da du ja keine PM ID hast. Die Methode create() ist statisch und muss so aufgerufen werden:

    PHP Source Code

    1. PMEditor::create()


    Außerdem ist die Fragen, wem du diese PM nun zusendest ($eventObj->object->userID - wahrscheinlich dem, der dsa Kommentar erstellt?). Ich würde mit der eventID eine neue Event-Klasse erstellen, alle User dieses Events abfragen und denen dann (möglicherweise auch noch eine Option einbauen, wo die User entscheiden können ob sie eine Benachrichtigung erhalten) eine Nachricht schicken.
    Gruß


    WBB4-Plugins:

    Neu: cChat
    Neu: Erweitertes Dropdown Hauptmenü
    Hallo Leute,

    vielen Dank für die Mühen die ihr hier investiert!! Ich hab davon ja leider keine Ahnung...

    Christopher Walz wrote:

    Außerdem ist die Fragen, wem du diese PM nun zusendest ($eventObj->object->userID - wahrscheinlich dem, der dsa Kommentar erstellt?). Ich würde mit der eventID eine neue Event-Klasse erstellen, alle User dieses Events abfragen und denen dann (möglicherweise auch noch eine Option einbauen, wo die User entscheiden können ob sie eine Benachrichtigung erhalten) eine Nachricht schicken.
    Ideal wäre wenn der Ersteller des Termins, sowie alle Benutzer die mit JA, VIELLEICHT, und NEIN im Termin gelistet sind...
    Das wäre die perfekte Variante...
    Sollte das zu kompliziert sein, könnte man auch eine Benutzergruppe angeben.
    Sollte dies nicht gehn, wäre auch noch die Möglichkeit das immer dieselben Benutzer die PM bekommen. Da in meinem Fall der Benutzerkreis nicht so groß ist wäre das nicht ganz schlimm, diese einmal anzugeben.

    Was muss ich denn dann mit dem Code machen, sollte er als fertig befunden werden?

    DANKE!
    Möglich ist alles :P

    In dem Falle könnte man es wie flogt lösen:

    PHP Source Code

    1. <?php
    2. require_once(WCF_DIR.'lib/system/event/EventListener.class.php');
    3. require_once(WCF_DIR.'lib/data/message/pm/PMEditor.class.php');
    4. class CalendarCommentNotificationListener implements EventListener {
    5. public function execute($eventObj, $className, $eventName) {
    6. $recipient = array();
    7. $recipient[] = array('userID'=> $eventObj->event->userID, 'username'=> $eventObj->event->username);
    8. if(isset($eventObj->event->participation->participants)){
    9. $participants = $eventObj->event->participation->participants;
    10. $answers = array('yes','no','maybe');
    11. foreach($answers as $answer){
    12. if(isset($participants[$answer])){
    13. foreach($participants[$answer] as $user){
    14. $recipient[] = array('userID'=> $participants->userID, 'username'=> $participants->userID);
    15. }
    16. }
    17. }
    18. }
    19. $recipient = array_unique($recipient);
    20. $draft = 0;
    21. $subject = 'Neuer Kommentar im Kalender';
    22. $msgtext = 'Hallo,'."\n"."\n".$eventObj->event->username.' hat einen Kommentar in Ihrem Kalendereintrag hinterlassen.';
    23. PMEditor::create($draft, $recipient, array(), $subject, $msgtext, $eventObj->event->userID, $eventObj->event->username);
    24. }
    25. }
    26. ?>

    Hawkes wrote:

    Hallo,

    ja das Plugin kann dafür verwendet werden. Dazu ist es ja da. Die Implementierung kann analog zu meinem Plugin bei der Gäastebuchbenachrichtigung erfolgen. Man könnte damit dann auch zu anderen Ereignisses im Kalender Benachrichtigungen erstellen.

    Wie müsste man dazu vorgehen? Müsste man die Gästebuchbenachrichtigung installieren, und es von dieser ableiten? Schafft das auch ein Leihe wie ich es bin? Könntest du dabei helfen?

    Danke!


    Edit:
    Profilgästebuch und dein Plugin für die Benachrichtigung hab ich schon mal installiert! Funktioniert perfekt!

    Post was edited 1 time, last by “Eagel” ().

    Hallo,

    gibt es zu dem Thema was neues?
    Eine Benachrichtigung bei neuem Kommentar im Kalender über PN oder Forum Benachrichtigungssystem wäre wirklich toll.
    Wenn ich ansatzweise wüsste wie man sowas realisieren kann würd ichs selber machen. Jemand einen Tipp dazu?

    @Hawkes
    Oder könntest du vielleicht nicht doch ein Plugin dafür erstellen Hawkes??

    Vielen Dank,

    Eagle