summaryrefslogtreecommitdiffstats
path: root/app/models/user.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2007-10-20 12:47:05 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2007-10-20 12:47:05 +0000
commit90d33c3e518f9e05d9e2893907ebd157062d33de (patch)
treec07d7071247f566b3049a672207dd29c707f67a0 /app/models/user.rb
parenteacd050630b2d2b3047e056a7dab7661fba083ca (diff)
downloadredmine-90d33c3e518f9e05d9e2893907ebd157062d33de.tar.gz
redmine-90d33c3e518f9e05d9e2893907ebd157062d33de.zip
More flexible mail notifications settings at user level. A user has now 3 options:
* notification on any event on all his projects * notification on any event on selected projects only (if the user belongs to more than 1 project) * notification only for things that he watches or he is involded in (eg. issues that he watches or he is author or assignee) git-svn-id: http://redmine.rubyforge.org/svn/trunk@855 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/user.rb')
-rw-r--r--app/models/user.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index e4c397a51..9c8d1d9a3 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -50,6 +50,11 @@ class User < ActiveRecord::Base
validates_confirmation_of :password, :allow_nil => true
validates_associated :custom_values, :on => :update
+ def before_create
+ self.mail_notification = false
+ true
+ end
+
def before_save
# update hashed_password if password was set
self.hashed_password = User.hash_password(self.password) if self.password
@@ -131,6 +136,18 @@ class User < ActiveRecord::Base
token.value
end
+ # Return an array of project ids for which the user has explicitly turned mail notifications on
+ def notified_projects_ids
+ @notified_projects_ids ||= memberships.select {|m| m.mail_notification?}.collect(&:project_id)
+ end
+
+ def notified_project_ids=(ids)
+ Member.update_all("mail_notification = #{connection.quoted_false}", ['user_id = ?', id])
+ Member.update_all("mail_notification = #{connection.quoted_true}", ['user_id = ? AND project_id IN (?)', id, ids]) if ids && !ids.empty?
+ @notified_projects_ids = nil
+ notified_projects_ids
+ end
+
def self.find_by_rss_key(key)
token = Token.find_by_value(key)
token && token.user.active? ? token.user : nil