summaryrefslogtreecommitdiff
path: root/app/Model/UserNotificationFilter.php
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-05-28 19:48:22 -0400
committerFrederic Guillot <fred@kanboard.net>2016-05-28 19:48:22 -0400
commit14713b0ec7ed93ca45578da069ad4e19a7d8addf (patch)
tree79972d53f6091a1ddb17f64a6a05a5523f5d5168 /app/Model/UserNotificationFilter.php
parent936376ffe74c583d3cb819e98f53a85137fdf8bc (diff)
Rename all models
Diffstat (limited to 'app/Model/UserNotificationFilter.php')
-rw-r--r--app/Model/UserNotificationFilter.php206
1 files changed, 0 insertions, 206 deletions
diff --git a/app/Model/UserNotificationFilter.php b/app/Model/UserNotificationFilter.php
deleted file mode 100644
index d885da04..00000000
--- a/app/Model/UserNotificationFilter.php
+++ /dev/null
@@ -1,206 +0,0 @@
-<?php
-
-namespace Kanboard\Model;
-
-use Kanboard\Core\Base;
-
-/**
- * User Notification Filter
- *
- * @package model
- * @author Frederic Guillot
- */
-class UserNotificationFilter extends Base
-{
- /**
- * SQL table name
- *
- * @var string
- */
- const PROJECT_TABLE = 'user_has_notifications';
-
- /**
- * User filters
- *
- * @var integer
- */
- const FILTER_NONE = 1;
- const FILTER_ASSIGNEE = 2;
- const FILTER_CREATOR = 3;
- const FILTER_BOTH = 4;
-
- /**
- * Get the list of filters
- *
- * @access public
- * @return array
- */
- public function getFilters()
- {
- return array(
- self::FILTER_NONE => t('All tasks'),
- self::FILTER_ASSIGNEE => t('Only for tasks assigned to me'),
- self::FILTER_CREATOR => t('Only for tasks created by me'),
- self::FILTER_BOTH => t('Only for tasks created by me and assigned to me'),
- );
- }
-
- /**
- * Get user selected filter
- *
- * @access public
- * @param integer $user_id
- * @return integer
- */
- public function getSelectedFilter($user_id)
- {
- return $this->db->table(User::TABLE)->eq('id', $user_id)->findOneColumn('notifications_filter');
- }
-
- /**
- * Save selected filter for a user
- *
- * @access public
- * @param integer $user_id
- * @param string $filter
- * @return boolean
- */
- public function saveFilter($user_id, $filter)
- {
- return $this->db->table(User::TABLE)->eq('id', $user_id)->update(array(
- 'notifications_filter' => $filter,
- ));
- }
-
- /**
- * Get user selected projects
- *
- * @access public
- * @param integer $user_id
- * @return array
- */
- public function getSelectedProjects($user_id)
- {
- return $this->db->table(self::PROJECT_TABLE)->eq('user_id', $user_id)->findAllByColumn('project_id');
- }
-
- /**
- * Save selected projects for a user
- *
- * @access public
- * @param integer $user_id
- * @param integer[] $project_ids
- * @return boolean
- */
- public function saveSelectedProjects($user_id, array $project_ids)
- {
- $results = array();
- $this->db->table(self::PROJECT_TABLE)->eq('user_id', $user_id)->remove();
-
- foreach ($project_ids as $project_id) {
- $results[] = $this->db->table(self::PROJECT_TABLE)->insert(array(
- 'user_id' => $user_id,
- 'project_id' => $project_id,
- ));
- }
-
- return !in_array(false, $results, true);
- }
-
- /**
- * Return true if the user should receive notification
- *
- * @access public
- * @param array $user
- * @param array $event_data
- * @return boolean
- */
- public function shouldReceiveNotification(array $user, array $event_data)
- {
- $filters = array(
- 'filterNone',
- 'filterAssignee',
- 'filterCreator',
- 'filterBoth',
- );
-
- foreach ($filters as $filter) {
- if ($this->$filter($user, $event_data)) {
- return $this->filterProject($user, $event_data);
- }
- }
-
- return false;
- }
-
- /**
- * Return true if the user will receive all notifications
- *
- * @access public
- * @param array $user
- * @return boolean
- */
- public function filterNone(array $user)
- {
- return $user['notifications_filter'] == self::FILTER_NONE;
- }
-
- /**
- * Return true if the user is the assignee and selected the filter "assignee"
- *
- * @access public
- * @param array $user
- * @param array $event_data
- * @return boolean
- */
- public function filterAssignee(array $user, array $event_data)
- {
- return $user['notifications_filter'] == self::FILTER_ASSIGNEE && $event_data['task']['owner_id'] == $user['id'];
- }
-
- /**
- * Return true if the user is the creator and enabled the filter "creator"
- *
- * @access public
- * @param array $user
- * @param array $event_data
- * @return boolean
- */
- public function filterCreator(array $user, array $event_data)
- {
- return $user['notifications_filter'] == self::FILTER_CREATOR && $event_data['task']['creator_id'] == $user['id'];
- }
-
- /**
- * Return true if the user is the assignee or the creator and selected the filter "both"
- *
- * @access public
- * @param array $user
- * @param array $event_data
- * @return boolean
- */
- public function filterBoth(array $user, array $event_data)
- {
- return $user['notifications_filter'] == self::FILTER_BOTH &&
- ($event_data['task']['creator_id'] == $user['id'] || $event_data['task']['owner_id'] == $user['id']);
- }
-
- /**
- * Return true if the user want to receive notification for the selected project
- *
- * @access public
- * @param array $user
- * @param array $event_data
- * @return boolean
- */
- public function filterProject(array $user, array $event_data)
- {
- $projects = $this->getSelectedProjects($user['id']);
-
- if (! empty($projects)) {
- return in_array($event_data['task']['project_id'], $projects);
- }
-
- return true;
- }
-}