diff options
| author | Frederic Guillot <fred@kanboard.net> | 2016-05-26 20:50:50 -0400 | 
|---|---|---|
| committer | Frederic Guillot <fred@kanboard.net> | 2016-05-26 20:50:50 -0400 | 
| commit | d9101da79e839984e0e782b48113dc61157d6688 (patch) | |
| tree | 81913fd719cfa6c0034c8008f2cb1f7b95a30e85 /app/Controller/WebNotificationController.php | |
| parent | 0596a4abb9ade1a6cd77516dc6893098eab2a323 (diff) | |
Mark notification as read when clicking on it
Diffstat (limited to 'app/Controller/WebNotificationController.php')
| -rw-r--r-- | app/Controller/WebNotificationController.php | 79 | 
1 files changed, 79 insertions, 0 deletions
| diff --git a/app/Controller/WebNotificationController.php b/app/Controller/WebNotificationController.php new file mode 100644 index 00000000..c7b9c8ff --- /dev/null +++ b/app/Controller/WebNotificationController.php @@ -0,0 +1,79 @@ +<?php + +namespace Kanboard\Controller; + +/** + * Web notification controller + * + * @package  Kanboard\Controller + * @author   Frederic Guillot + */ +class WebNotificationController extends BaseController +{ +    /** +     * Mark all notifications as read +     * +     * @access public +     */ +    public function flush() +    { +        $user_id = $this->getUserId(); + +        $this->userUnreadNotification->markAllAsRead($user_id); +        $this->response->redirect($this->helper->url->to('DashboardController', 'notifications', array('user_id' => $user_id))); +    } + +    /** +     * Mark a notification as read +     * +     * @access public +     */ +    public function remove() +    { +        $user_id = $this->getUserId(); +        $notification_id = $this->request->getIntegerParam('notification_id'); + +        $this->userUnreadNotification->markAsRead($user_id, $notification_id); +        $this->response->redirect($this->helper->url->to('DashboardController', 'notifications', array('user_id' => $user_id))); +    } + +    /** +     * Redirect to the task and mark notification as read +     */ +    public function redirect() +    { +        $user_id = $this->getUserId(); +        $notification_id = $this->request->getIntegerParam('notification_id'); + +        $notification = $this->userUnreadNotification->getById($notification_id); +        $this->userUnreadNotification->markAsRead($user_id, $notification_id); + +        if (empty($notification)) { +            $this->response->redirect($this->helper->url->to('DashboardController', 'notifications', array('user_id' => $user_id))); +        } elseif ($this->helper->text->contains($notification['event_name'], 'comment')) { +            $this->response->redirect($this->helper->url->to( +                'task', +                'show', +                array('task_id' => $notification['event_data']['task']['id'], 'project_id' => $notification['event_data']['task']['project_id']), +                'comment-'.$notification['event_data']['comment']['id'] +            )); +        } else { +            $this->response->redirect($this->helper->url->to( +                'task', +                'show', +                array('task_id' => $notification['event_data']['task']['id'], 'project_id' => $notification['event_data']['task']['project_id']) +            )); +        } +    } + +    private function getUserId() +    { +        $user_id = $this->request->getIntegerParam('user_id'); + +        if (! $this->userSession->isAdmin() && $user_id != $this->userSession->getId()) { +            $user_id = $this->userSession->getId(); +        } + +        return $user_id; +    } +} | 
