From b9f2d5650d464983a80f84f3ed0845028a355c92 Mon Sep 17 00:00:00 2001
From: Frederic Guillot <fred@kanboard.net>
Date: Tue, 24 May 2016 20:30:31 -0400
Subject: Added NotificationJob

---
 app/Subscriber/NotificationSubscriber.php | 74 +++++++++----------------------
 1 file changed, 20 insertions(+), 54 deletions(-)

(limited to 'app/Subscriber')

diff --git a/app/Subscriber/NotificationSubscriber.php b/app/Subscriber/NotificationSubscriber.php
index 651b8a96..2a1fe6c7 100644
--- a/app/Subscriber/NotificationSubscriber.php
+++ b/app/Subscriber/NotificationSubscriber.php
@@ -3,6 +3,7 @@
 namespace Kanboard\Subscriber;
 
 use Kanboard\Event\GenericEvent;
+use Kanboard\Job\NotificationJob;
 use Kanboard\Model\Task;
 use Kanboard\Model\Comment;
 use Kanboard\Model\Subtask;
@@ -14,67 +15,32 @@ class NotificationSubscriber extends BaseSubscriber implements EventSubscriberIn
     public static function getSubscribedEvents()
     {
         return array(
-            Task::EVENT_USER_MENTION => 'handleEvent',
-            Task::EVENT_CREATE => 'handleEvent',
-            Task::EVENT_UPDATE => 'handleEvent',
-            Task::EVENT_CLOSE => 'handleEvent',
-            Task::EVENT_OPEN => 'handleEvent',
-            Task::EVENT_MOVE_COLUMN => 'handleEvent',
-            Task::EVENT_MOVE_POSITION => 'handleEvent',
-            Task::EVENT_MOVE_SWIMLANE => 'handleEvent',
+            Task::EVENT_USER_MENTION    => 'handleEvent',
+            Task::EVENT_CREATE          => 'handleEvent',
+            Task::EVENT_UPDATE          => 'handleEvent',
+            Task::EVENT_CLOSE           => 'handleEvent',
+            Task::EVENT_OPEN            => 'handleEvent',
+            Task::EVENT_MOVE_COLUMN     => 'handleEvent',
+            Task::EVENT_MOVE_POSITION   => 'handleEvent',
+            Task::EVENT_MOVE_SWIMLANE   => 'handleEvent',
             Task::EVENT_ASSIGNEE_CHANGE => 'handleEvent',
-            Subtask::EVENT_CREATE => 'handleEvent',
-            Subtask::EVENT_UPDATE => 'handleEvent',
-            Comment::EVENT_CREATE => 'handleEvent',
-            Comment::EVENT_UPDATE => 'handleEvent',
+            Subtask::EVENT_CREATE       => 'handleEvent',
+            Subtask::EVENT_UPDATE       => 'handleEvent',
+            Comment::EVENT_CREATE       => 'handleEvent',
+            Comment::EVENT_UPDATE       => 'handleEvent',
             Comment::EVENT_USER_MENTION => 'handleEvent',
-            TaskFile::EVENT_CREATE => 'handleEvent',
+            TaskFile::EVENT_CREATE      => 'handleEvent',
         );
     }
 
-    public function handleEvent(GenericEvent $event, $event_name)
+    public function handleEvent(GenericEvent $event, $eventName)
     {
-        if (! $this->isExecuted($event_name)) {
-            $this->logger->debug('Subscriber executed: '.__METHOD__);
-            $event_data = $this->getEventData($event);
+        if (!$this->isExecuted($eventName)) {
+            $this->logger->debug('Subscriber executed: ' . __METHOD__);
 
-            if (! empty($event_data)) {
-                if (! empty($event['mention'])) {
-                    $this->userNotification->sendUserNotification($event['mention'], $event_name, $event_data);
-                } else {
-                    $this->userNotification->sendNotifications($event_name, $event_data);
-                    $this->projectNotification->sendNotifications($event_data['task']['project_id'], $event_name, $event_data);
-                }
-            }
+            $this->queueManager->push(NotificationJob::getInstance($this->container)
+                ->withParams($event, $eventName, get_class($event))
+            );
         }
     }
-
-    public function getEventData(GenericEvent $event)
-    {
-        $values = array();
-
-        if (! empty($event['changes'])) {
-            $values['changes'] = $event['changes'];
-        }
-
-        switch (get_class($event)) {
-            case 'Kanboard\Event\TaskEvent':
-                $values['task'] = $this->taskFinder->getDetails($event['task_id']);
-                break;
-            case 'Kanboard\Event\SubtaskEvent':
-                $values['subtask'] = $this->subtask->getById($event['id'], true);
-                $values['task'] = $this->taskFinder->getDetails($values['subtask']['task_id']);
-                break;
-            case 'Kanboard\Event\FileEvent':
-                $values['file'] = $event->getAll();
-                $values['task'] = $this->taskFinder->getDetails($values['file']['task_id']);
-                break;
-            case 'Kanboard\Event\CommentEvent':
-                $values['comment'] = $this->comment->getById($event['id']);
-                $values['task'] = $this->taskFinder->getDetails($values['comment']['task_id']);
-                break;
-        }
-
-        return $values;
-    }
 }
-- 
cgit v1.2.3