Changeset 1192

Show
Ignore:
Timestamp:
07/12/08 02:09:46 (4 months ago)
Author:
alban
Message:

Filtre les Subscriptions sans User et les marque notified. Fixes #17

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/app/models/subscription.rb

    r1140 r1192  
    33        belongs_to :subscriber, :polymorphic => true 
    44        belongs_to :document 
    5          
     5 
    66        validates_uniqueness_of :subscriber_id, :scope => [:document_id, :subscriber_type] 
    7          
     7 
    88        def self.notify 
    99          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 
    1020          puts "#{unnotified_subscriptions.size} unnotified subscriptions" unless unnotified_subscriptions.empty? 
    11            
     21 
    1222          mapped_subscriptions = Hash.new { |hash, user| hash[user] = Array.new } 
    13            
     23 
    1424          unnotified_subscriptions.inject(mapped_subscriptions) do |map, subscription| 
    15             subscription.users.each do |user|  
     25            subscription.users.each do |user| 
    1626              map[user].push(subscription) 
    1727            end 
    1828          map 
    1929          end 
    20            
     30 
    2131          mapped_subscriptions.each do |user, subscriptions| 
    2232            puts "notify #{user.username} for #{subscriptions.size} subscription(s)" 
    23             Mailer.deliver_document_shared(user, subscriptions)   
     33            Mailer.deliver_document_shared(user, subscriptions) 
    2434            subscriptions.each { |subscription| subscription.update_attribute("notified", true) } 
    2535          end 
    2636        end 
    27          
     37 
    2838        def users 
    2939         subscriber.is_a?(Group) ? subscriber.users : [ subscriber ] 
    3040        end 
    31          
     41 
    3242end