##// END OF EJS Templates
remove trailing white-spaces from app/models/watcher.rb....
Toshi MARUYAMA -
r6390:d8cb0855dc04
parent child
Show More
@@ -1,65 +1,65
1 # redMine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2007 Jean-Philippe Lang
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 class Watcher < ActiveRecord::Base
18 class Watcher < ActiveRecord::Base
19 belongs_to :watchable, :polymorphic => true
19 belongs_to :watchable, :polymorphic => true
20 belongs_to :user
20 belongs_to :user
21
21
22 validates_presence_of :user
22 validates_presence_of :user
23 validates_uniqueness_of :user_id, :scope => [:watchable_type, :watchable_id]
23 validates_uniqueness_of :user_id, :scope => [:watchable_type, :watchable_id]
24
24
25 # Unwatch things that users are no longer allowed to view
25 # Unwatch things that users are no longer allowed to view
26 def self.prune(options={})
26 def self.prune(options={})
27 if options.has_key?(:user)
27 if options.has_key?(:user)
28 prune_single_user(options[:user], options)
28 prune_single_user(options[:user], options)
29 else
29 else
30 pruned = 0
30 pruned = 0
31 User.find(:all, :conditions => "id IN (SELECT DISTINCT user_id FROM #{table_name})").each do |user|
31 User.find(:all, :conditions => "id IN (SELECT DISTINCT user_id FROM #{table_name})").each do |user|
32 pruned += prune_single_user(user, options)
32 pruned += prune_single_user(user, options)
33 end
33 end
34 pruned
34 pruned
35 end
35 end
36 end
36 end
37
37
38 protected
38 protected
39
39
40 def validate
40 def validate
41 errors.add :user_id, :invalid unless user.nil? || user.active?
41 errors.add :user_id, :invalid unless user.nil? || user.active?
42 end
42 end
43
43
44 private
44 private
45
45
46 def self.prune_single_user(user, options={})
46 def self.prune_single_user(user, options={})
47 return unless user.is_a?(User)
47 return unless user.is_a?(User)
48 pruned = 0
48 pruned = 0
49 find(:all, :conditions => {:user_id => user.id}).each do |watcher|
49 find(:all, :conditions => {:user_id => user.id}).each do |watcher|
50 next if watcher.watchable.nil?
50 next if watcher.watchable.nil?
51
51
52 if options.has_key?(:project)
52 if options.has_key?(:project)
53 next unless watcher.watchable.respond_to?(:project) && watcher.watchable.project == options[:project]
53 next unless watcher.watchable.respond_to?(:project) && watcher.watchable.project == options[:project]
54 end
54 end
55
55
56 if watcher.watchable.respond_to?(:visible?)
56 if watcher.watchable.respond_to?(:visible?)
57 unless watcher.watchable.visible?(user)
57 unless watcher.watchable.visible?(user)
58 watcher.destroy
58 watcher.destroy
59 pruned += 1
59 pruned += 1
60 end
60 end
61 end
61 end
62 end
62 end
63 pruned
63 pruned
64 end
64 end
65 end
65 end
General Comments 0
You need to be logged in to leave comments. Login now