diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/models/news.rb | 4 | ||||
-rw-r--r-- | app/models/user.rb | 44 |
2 files changed, 20 insertions, 28 deletions
diff --git a/app/models/news.rb b/app/models/news.rb index 56c166b6d..c8a4112cc 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -49,6 +49,10 @@ class News < ActiveRecord::Base user.allowed_to?(:comment_news, project) end + def recipients + project.users.select {|user| user.notify_about?(self)}.map(&:mail) + end + # returns latest news for projects visible by user def self.latest(user = User.current, count = 5) visible(user).includes([:author, :project]).order("#{News.table_name}.created_on DESC").limit(count).all diff --git a/app/models/user.rb b/app/models/user.rb index a4e1fe47e..361b994cc 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -563,38 +563,26 @@ class User < Principal # # TODO: only supports Issue events currently def notify_about?(object) - case mail_notification - when 'all' + if mail_notification == 'all' true - when 'selected' - # user receives notifications for created/assigned issues on unselected projects - if object.is_a?(Issue) && (object.author == self || is_or_belongs_to?(object.assigned_to) || is_or_belongs_to?(object.assigned_to_was)) - true - else - false - end - when 'none' + elsif mail_notification.blank? || mail_notification == 'none' false - when 'only_my_events' - if object.is_a?(Issue) && (object.author == self || is_or_belongs_to?(object.assigned_to) || is_or_belongs_to?(object.assigned_to_was)) - true - else - false - end - when 'only_assigned' - if object.is_a?(Issue) && (is_or_belongs_to?(object.assigned_to) || is_or_belongs_to?(object.assigned_to_was)) - true - else - false - end - when 'only_owner' - if object.is_a?(Issue) && object.author == self + else + case object + when Issue + case mail_notification + when 'selected', 'only_my_events' + # user receives notifications for created/assigned issues on unselected projects + object.author == self || is_or_belongs_to?(object.assigned_to) || is_or_belongs_to?(object.assigned_to_was) + when 'only_assigned' + is_or_belongs_to?(object.assigned_to) || is_or_belongs_to?(object.assigned_to_was) + when 'only_owner' + object.author == self + end + when News + # always send to project members except when mail_notification is set to 'none' true - else - false end - else - false end end |