From f7fa47fa35cde502317fbc92ca90278541cd628a Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Tue, 7 Oct 2014 12:21:02 -0400 Subject: Only send notifications to project members (#299) --- app/Model/Notification.php | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'app/Model/Notification.php') diff --git a/app/Model/Notification.php b/app/Model/Notification.php index 3c14caf0..4b7ae50f 100644 --- a/app/Model/Notification.php +++ b/app/Model/Notification.php @@ -27,6 +27,27 @@ class Notification extends Base */ const TABLE = 'user_has_notifications'; + /** + * Get a list of people with notifications enabled + * + * @access public + * @param integer $project_id Project id + * @param array $exlude_users List of user_id to exclude + * @return array + */ + public function getUsersWithNotification($project_id, array $exclude_users = array()) + { + return $this->db + ->table(ProjectPermission::TABLE) + ->columns(User::TABLE.'.id', User::TABLE.'.username', User::TABLE.'.name', User::TABLE.'.email') + ->join(User::TABLE, 'id', 'user_id') + ->eq('project_id', $project_id) + ->eq('notifications_enabled', '1') + ->neq('email', '') + ->notin(User::TABLE.'.id', $exclude_users) + ->findAll(); + } + /** * Get the list of users to send the notification for a given project * @@ -42,12 +63,7 @@ class Notification extends Base $exclude_users[] = $this->acl->getUserId(); } - $users = $this->db->table(User::TABLE) - ->columns('id', 'username', 'name', 'email') - ->eq('notifications_enabled', '1') - ->neq('email', '') - ->notin('id', $exclude_users) - ->findAll(); + $users = $this->getUsersWithNotification($project_id, $exclude_users); foreach ($users as $index => $user) { -- cgit v1.2.3