summaryrefslogtreecommitdiffstats
path: root/app/models/member_role.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2009-12-13 12:39:22 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2009-12-13 12:39:22 +0000
commitf33231181f9591ee67577e229a8bf6de24516ba0 (patch)
tree57bbc4338b9cf35cecf323565fefbf549ecfd14f /app/models/member_role.rb
parentc31a6719735114c371e5da68eb3787b8713c5360 (diff)
downloadredmine-f33231181f9591ee67577e229a8bf6de24516ba0.tar.gz
redmine-f33231181f9591ee67577e229a8bf6de24516ba0.zip
Makes user unwatch what he can no longer view after its permissions have changed (#3589).
A rake task (redmine:watchers:prune) is also added to prune existing watchers. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3167 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/member_role.rb')
-rw-r--r--app/models/member_role.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/app/models/member_role.rb b/app/models/member_role.rb
index 5a31c17c5..286659fc3 100644
--- a/app/models/member_role.rb
+++ b/app/models/member_role.rb
@@ -49,6 +49,11 @@ class MemberRole < ActiveRecord::Base
end
def remove_role_from_group_users
- MemberRole.find(:all, :conditions => { :inherited_from => id }).each(&:destroy)
+ MemberRole.find(:all, :conditions => { :inherited_from => id }).group_by(&:member).each do |member, member_roles|
+ member_roles.each(&:destroy)
+ if member && member.user
+ Watcher.prune(:user => member.user, :project => member.project)
+ end
+ end
end
end