diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-10-20 12:47:05 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-10-20 12:47:05 +0000 |
commit | 90d33c3e518f9e05d9e2893907ebd157062d33de (patch) | |
tree | c07d7071247f566b3049a672207dd29c707f67a0 /app/models/user.rb | |
parent | eacd050630b2d2b3047e056a7dab7661fba083ca (diff) | |
download | redmine-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.rb | 17 |
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 |