99use Fabiang \Xmpp \Protocol \Presence ;
1010use Kanboard \Core \Base ;
1111use Kanboard \Core \Notification \NotificationInterface ;
12+ use Kanboard \Model \TaskModel ;
1213
1314/**
1415 * Jabber Notification
@@ -23,24 +24,23 @@ class Jabber extends Base implements NotificationInterface
2324 *
2425 * @access public
2526 * @param array $user
26- * @param string $event_name
27- * @param array $event_data
27+ * @param string $eventName
28+ * @param array $eventData
2829 */
29- public function notifyUser (array $ user , $ event_name , array $ event_data )
30+ public function notifyUser (array $ user , $ eventName , array $ eventData )
3031 {
3132 try {
3233 $ jid = $ this ->userMetadataModel ->get ($ user ['id ' ], 'jabber_jid ' );
3334
3435 if (! empty ($ jid )) {
35- $ project = $ this ->projectModel ->getById ($ event_data ['task ' ]['project_id ' ]);
36- $ client = $ this ->getClient ();
37-
38- $ message = new Message ;
39- $ message ->setMessage ($ this ->getMessage ($ project , $ event_name , $ event_data ))
40- ->setTo ($ jid );
41-
42- $ client ->send ($ message );
43- $ client ->disconnect ();
36+ if ($ eventName === TaskModel::EVENT_OVERDUE ) {
37+ foreach ($ eventData ['tasks ' ] as $ task ) {
38+ $ eventData ['task ' ] = $ task ;
39+ $ this ->sendDirectMessage ($ jid , $ eventName , $ eventData );
40+ }
41+ } else {
42+ $ this ->sendDirectMessage ($ jid , $ eventName , $ eventData );
43+ }
4444 }
4545
4646 } catch (Exception $ e ) {
@@ -53,23 +53,23 @@ public function notifyUser(array $user, $event_name, array $event_data)
5353 *
5454 * @access public
5555 * @param array $project
56- * @param string $event_name
57- * @param array $event_data
56+ * @param string $eventName
57+ * @param array $eventData
5858 */
59- public function notifyProject (array $ project , $ event_name , array $ event_data )
59+ public function notifyProject (array $ project , $ eventName , array $ eventData )
6060 {
6161 try {
6262 $ room = $ this ->projectMetadataModel ->get ($ project ['id ' ], 'jabber_room ' );
6363
6464 if (! empty ($ room )) {
6565 $ client = $ this ->getClient ();
6666
67- $ channel = new Presence ;
67+ $ channel = new Presence () ;
6868 $ channel ->setTo ($ room )->setNickname ($ this ->configModel ->get ('jabber_nickname ' ));
6969 $ client ->send ($ channel );
7070
71- $ message = new Message ;
72- $ message ->setMessage ($ this ->getMessage ($ project , $ event_name , $ event_data ))
71+ $ message = new Message () ;
72+ $ message ->setMessage ($ this ->getMessage ($ project , $ eventName , $ eventData ))
7373 ->setTo ($ room )
7474 ->setType (Message::TYPE_GROUPCHAT );
7575
@@ -127,4 +127,24 @@ public function getMessage(array $project, $event_name, array $event_data)
127127
128128 return $ payload ;
129129 }
130+
131+ /**
132+ * Send XMPP message to someone
133+ *
134+ * @param $jid
135+ * @param $eventName
136+ * @param $eventData
137+ */
138+ public function sendDirectMessage ($ jid , $ eventName , $ eventData )
139+ {
140+ $ project = $ this ->projectModel ->getById ($ eventData ['task ' ]['project_id ' ]);
141+ $ client = $ this ->getClient ();
142+
143+ $ message = new Message ();
144+ $ message ->setMessage ($ this ->getMessage ($ project , $ eventName , $ eventData ))
145+ ->setTo ($ jid );
146+
147+ $ client ->send ($ message );
148+ $ client ->disconnect ();
149+ }
130150}
0 commit comments