You are not logged in.

Dear visitor, welcome to WoltLab Community Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Monday, November 28th 2011, 3:46pm

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

This post has been edited 1 times, last edit by "Eagel" (Mar 9th 2012, 7:20pm)


2

Friday, March 9th 2012, 7:20pm

Nicht vielleicht doch jemand eine Idee dazu ?? ?(

3

Friday, March 9th 2012, 8:06pm

Ich weiß nicht ob es dafür eine Standardfunktion gibt, mit einem Plugin wäre das aber umsetzbar.

4

Friday, March 9th 2012, 8:09pm

Mit der Plugin suche konnte ich nicht fündig werden...

Klingt so als könntest du so einens erstellen?? :)

5

Friday, March 9th 2012, 8:16pm

Ein Eventlistener auf saved@CalendarEventCommentAddForm und mit PMEditor::create() die PM versenden, sollte schon funktionieren. Möglicherweise gibts da auch schon ne Standardfunktion für, müsste dir aber jemand anderes sagen ;)

6

Friday, March 9th 2012, 8:19pm

mensch vielen dank für den Lösungsansatz!!

Könntest du aber bitte etwas genauer erklären wo und wie ich die Settings vornehmen soll??

Eine Standardfunktion konnte ich nirgends finden...

7

Friday, March 9th 2012, 8:27pm

Da gibt es keine "Einstellungen" für, du müsstest dir wie gesagt ein Plugin mit meinem Pluginansatz erstellen (lassen).

8

Friday, March 9th 2012, 8:31pm

hmm...
und wieviel Aufwand wäre so ein plugin?
wer könnte sowas?

  • "Sebastian S." is male

Posts: 595

Location: Stuttgart

Occupation: KFZ-Mechatroniker

  • Send private message

9

Saturday, March 10th 2012, 4:09am

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

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
require_once(WCF_DIR.'lib/system/event/EventListener.class.php');
require_once(WCF_DIR.'lib/data/message/pm/PMEditor.class.php');

class CalendarCommentNotificationListener implements EventListener {
    public function execute($eventObj$className$eventName) {
        if($eventObj->object->eventID) {
            
            $post = new PMEditor($eventObj->object->eventID);
            
            $subject 'Neuer Kommentar im Kalender';
            $text 'Ein Benutzer hat einen Kommentar in Ihrem Kalendereintrag hinterlassen.';
            $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));
        }
    }
}
?>


XML

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<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">
	<import>
		<eventlistener>
			<eventclassname>CalendarEventCommentAddForm</eventclassname>
			<eventname>saved</eventname>
			<listenerclassfile>lib/system/event/listener/CalendarCommentNotificationListener.class.php</listenerclassfile>
		</eventlistener>
	</import>
</data>
Mit freundlichen Grüßen
Sebastian S.

This post has been edited 2 times, last edit by "Sebastian S." (Mar 10th 2012, 4:17am)


Alexander Ebert

WoltLab Developer

  • "Alexander Ebert" is male

Posts: 4,732

Location: Berlin

  • Send private message

10

Saturday, March 10th 2012, 4:46am

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
public static function create($draft$recipients$blindCopies$subject$text$userID$username$options = array(), $attachments null$parentPmID 0) {
Alexander Ebert
Developer WoltLab® GmbH


  • "Sebastian S." is male

Posts: 595

Location: Stuttgart

Occupation: KFZ-Mechatroniker

  • Send private message

11

Saturday, March 10th 2012, 5:11am

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

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
require_once(WCF_DIR.'lib/system/event/EventListener.class.php');
require_once(WCF_DIR.'lib/data/message/pm/PMEditor.class.php');

class CalendarCommentNotificationListener implements EventListener {
    public function execute($eventObj$className$eventName) {
        if($eventObj->object->eventID) {
            
            $post = new PMEditor($eventObj->object->userID);
            
            $subject 'Neuer Kommentar im Kalender';
            $text 'Ein Benutzer hat einen Kommentar in Ihrem Kalendereintrag hinterlassen.';
            $options = array('enableSmilies' => $post->enableSmilies'enableHtml' => $post->enableHtml'enableBBCodes' => $post->enableBBCodes'showSignature' => $post->showSignature);
            $parentPmID 0;
            $draft 0;
            $post->create($draft$post->recipients.$eventObj->object->userIDnull$post->subject.$subject$post->text.$text$post->userID.WCF::getUser()->userID$post->username.WCF::getUser()->username$optionsnull$parentPmID);
        }
    }
}
?>


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

This post has been edited 1 times, last edit by "Sebastian S." (Mar 10th 2012, 5:16am)


12

Saturday, March 10th 2012, 8:00am

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ß

13

Saturday, March 10th 2012, 10:09am

Hallo Leute,

vielen Dank für die Mühen die ihr hier investiert!! Ich hab davon ja leider keine Ahnung...
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!

14

Saturday, March 10th 2012, 12:14pm

Möglich ist alles :P

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

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
require_once(WCF_DIR.'lib/system/event/EventListener.class.php');
require_once(WCF_DIR.'lib/data/message/pm/PMEditor.class.php');

class CalendarCommentNotificationListener implements EventListener {
    public function execute($eventObj$className$eventName) {
                $recipient = array();
                $recipient[] = array('userID'=> $eventObj->event->userID'username'=> $eventObj->event->username);
                
                if(isset($eventObj->event->participation->participants)){
                        $participants $eventObj->event->participation->participants;
                        $answers = array('yes','no','maybe');
                        foreach($answers as $answer){
                                if(isset($participants[$answer])){
                                        foreach($participants[$answer] as $user){
                                                $recipient[] = array('userID'=> $participants->userID'username'=> $participants->userID);
                                        }
                                }
                        }
                }
                
                $recipient array_unique($recipient);
                
                $draft 0;
                $subject 'Neuer Kommentar im Kalender';
                $msgtext 'Hallo,'."\n"."\n".$eventObj->event->username.' hat einen Kommentar in Ihrem Kalendereintrag hinterlassen.';
                PMEditor::create($draft$recipient, array(), $subject$msgtext$eventObj->event->userID$eventObj->event->username);
    }
}
?>

15

Saturday, March 10th 2012, 12:16pm

Könnte man evt. auch statt PN das Benachrichtigungssystem dafür verwenden?

http://www.woltlab.com/de/pluginstore/pl…tml?pluginID=27

Hawkes

Member

  • "Hawkes" is male

Posts: 5,962

Location: Konstanz

Occupation: Student (Physik)

  • Send private message

16

Saturday, March 10th 2012, 12:29pm

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.
Kein Support von Plugins per PN, Mail oder IM! Alte Plugins, die ich nicht mehr im Plugin-Store anbiete, werden nicht mehr supportet. Bitte von Anfragen absehen.
Meine Plugins und Projekte

17

Saturday, March 10th 2012, 1:00pm

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!

This post has been edited 1 times, last edit by "Eagel" (Mar 10th 2012, 1:25pm)


Hawkes

Member

  • "Hawkes" is male

Posts: 5,962

Location: Konstanz

Occupation: Student (Physik)

  • Send private message

18

Saturday, March 10th 2012, 1:40pm

Ich meinte damit, dass du das anhand des entsprechenden Plugins analog sowas programmieren kannst. Vorrausgesetzt die Programmierkenntnisse sind da.

Ich kann gucken, ob ich dazu mal komme, kann aber nichts versprechen.
Kein Support von Plugins per PN, Mail oder IM! Alte Plugins, die ich nicht mehr im Plugin-Store anbiete, werden nicht mehr supportet. Bitte von Anfragen absehen.
Meine Plugins und Projekte

19

Saturday, March 10th 2012, 2:33pm

Also ich wäre um jede Hilfe dankbar da ich davon keine Ahnung habe...
Wüsste nicht mal wo anfangen.
Gibs dazu irgendwo evt. eine Anleitung?

Aber das wäre doch ein schönes zusätzliches Plugin zu deiner Geburtstag und Gastbuch Benachrichtigung! 8o

20

Monday, May 7th 2012, 11:23am

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