Changeset 1192
- Timestamp:
- 07/12/08 02:09:46 (4 months ago)
- Files:
-
- trunk/app/models/subscription.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/app/models/subscription.rb
r1140 r1192 3 3 belongs_to :subscriber, :polymorphic => true 4 4 belongs_to :document 5 5 6 6 validates_uniqueness_of :subscriber_id, :scope => [:document_id, :subscriber_type] 7 7 8 8 def self.notify 9 9 unnotified_subscriptions = Subscription.find_all_by_notified(false) 10 11 unnotified_subscriptions.delete_if do |subscription| 12 if subscription.users.empty? 13 subscription.update_attribute(:notified, true) 14 true 15 else 16 false 17 end 18 end 19 10 20 puts "#{unnotified_subscriptions.size} unnotified subscriptions" unless unnotified_subscriptions.empty? 11 21 12 22 mapped_subscriptions = Hash.new { |hash, user| hash[user] = Array.new } 13 23 14 24 unnotified_subscriptions.inject(mapped_subscriptions) do |map, subscription| 15 subscription.users.each do |user| 25 subscription.users.each do |user| 16 26 map[user].push(subscription) 17 27 end 18 28 map 19 29 end 20 30 21 31 mapped_subscriptions.each do |user, subscriptions| 22 32 puts "notify #{user.username} for #{subscriptions.size} subscription(s)" 23 Mailer.deliver_document_shared(user, subscriptions) 33 Mailer.deliver_document_shared(user, subscriptions) 24 34 subscriptions.each { |subscription| subscription.update_attribute("notified", true) } 25 35 end 26 36 end 27 37 28 38 def users 29 39 subscriber.is_a?(Group) ? subscriber.users : [ subscriber ] 30 40 end 31 41 32 42 end
