Changeset 1140
- Timestamp:
- 08/27/07 18:06:19 (1 year ago)
- Files:
-
- trunk/app/models/mailer.rb (modified) (2 diffs)
- trunk/app/models/subscription.rb (modified) (1 diff)
- trunk/app/views/mailer/document_shared.text.html.rhtml (added)
- trunk/app/views/mailer/document_shared.text.plain.rhtml (added)
- trunk/db/migrate/023_add_subscription_notified.rb (added)
- trunk/db/migrate/024_remove_subscription_without_subscriber.rb (added)
- trunk/db/schema.rb (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/app/models/mailer.rb
r1121 r1140 1 1 class Mailer < ActionMailer::Base 2 default_url_options[:host] = 'audiobank.tryphon.org' 3 2 4 def confirm(user, controller) 3 5 @recipients = user.email … … 15 17 end 16 18 19 def document_shared(user, subscriptions) 20 return if subscriptions.empty? 21 22 @recipients = user.email 23 @from = "AudioBank <audiobank@tryphon.org>" 24 @subject = 25 "[AudioBank] " + 26 (subscriptions.size == 1 ? "nouvelle souscription" : "nouvelles souscriptions") 27 @body = { :subscriptions => subscriptions, :user => user } 28 end 29 17 30 end trunk/app/models/subscription.rb
r1130 r1140 5 5 6 6 validates_uniqueness_of :subscriber_id, :scope => [:document_id, :subscriber_type] 7 8 def self.notify 9 unnotified_subscriptions = Subscription.find_all_by_notified(false) 10 puts "#{unnotified_subscriptions.size} unnotified subscriptions" unless unnotified_subscriptions.empty? 11 12 mapped_subscriptions = Hash.new { |hash, user| hash[user] = Array.new } 13 14 unnotified_subscriptions.inject(mapped_subscriptions) do |map, subscription| 15 subscription.users.each do |user| 16 map[user].push(subscription) 17 end 18 map 19 end 20 21 mapped_subscriptions.each do |user, subscriptions| 22 puts "notify #{user.username} for #{subscriptions.size} subscription(s)" 23 Mailer.deliver_document_shared(user, subscriptions) 24 subscriptions.each { |subscription| subscription.update_attribute("notified", true) } 25 end 26 end 27 28 def users 29 subscriber.is_a?(Group) ? subscriber.users : [ subscriber ] 30 end 31 7 32 end trunk/db/schema.rb
r1137 r1140 3 3 # then regenerate this schema definition. 4 4 5 ActiveRecord::Schema.define(:version => 2 2) do5 ActiveRecord::Schema.define(:version => 24) do 6 6 7 7 create_table "casts", :force => true do |t| 8 t.column "document_id", :integer, :null => false9 t.column "name", :string, : null => false8 t.column "document_id", :integer, :null => false 9 t.column "name", :string, :default => "", :null => false 10 10 end 11 11 … … 15 15 16 16 create_table "documents", :force => true do |t| 17 t.column "title", :string, :null => false18 t.column "description", :string, :null => false17 t.column "title", :string, :default => "", :null => false 18 t.column "description", :string, :default => "", :null => false 19 19 t.column "author_id", :integer, :null => false 20 20 t.column "length", :integer, :default => 0, :null => false 21 21 t.column "size", :integer, :default => 0, :null => false 22 22 t.column "format", :string, :default => "application/octet-stream", :null => false 23 t.column "type", :string, :null => false23 t.column "type", :string, :default => "", :null => false 24 24 t.column "uploaded", :boolean, :default => false 25 25 t.column "updated_at", :datetime … … 32 32 33 33 create_table "groups", :force => true do |t| 34 t.column "name", :string, : null => false34 t.column "name", :string, :default => "", :null => false 35 35 t.column "description", :string 36 t.column "owner_id", :integer, :null => false36 t.column "owner_id", :integer, :null => false 37 37 end 38 38 … … 74 74 75 75 create_table "reviews", :force => true do |t| 76 t.column "document_id", :integer, :null => false77 t.column "user_id", :integer, :null => false78 t.column "rating", :integer, :null => false79 t.column "description", :string, : null => false80 t.column "created_at", :datetime, :null => false76 t.column "document_id", :integer, :null => false 77 t.column "user_id", :integer, :null => false 78 t.column "rating", :integer, :null => false 79 t.column "description", :string, :default => "", :null => false 80 t.column "created_at", :datetime, :null => false 81 81 end 82 82 … … 90 90 91 91 create_table "subscriptions", :force => true do |t| 92 t.column "document_id", :integer, :null => false93 t.column "author_id", :integer, :null => false94 t.column "subscriber_id", :integer, :null => false92 t.column "document_id", :integer, :null => false 93 t.column "author_id", :integer, :null => false 94 t.column "subscriber_id", :integer, :null => false 95 95 t.column "download_count", :integer, :default => 0 96 96 t.column "created_at", :datetime 97 t.column "subscriber_type", :string, :null => false 97 t.column "subscriber_type", :string, :default => "", :null => false 98 t.column "notified", :boolean, :null => false 98 99 end 99 100 … … 103 104 104 105 create_table "uploads", :force => true do |t| 105 t.column "document_id", :integer, :null => false106 t.column "key", :string, : null => false106 t.column "document_id", :integer, :null => false 107 t.column "key", :string, :default => "", :null => false 107 108 end 108 109 109 110 create_table "users", :force => true do |t| 110 t.column "username", :string, :null => false111 t.column "password", :string, :null => false112 t.column "name", :string, :null => false113 t.column "email", :string, :null => false111 t.column "username", :string, :default => "" 112 t.column "password", :string, :default => "" 113 t.column "name", :string, :default => "", :null => false 114 t.column "email", :string, :default => "", :null => false 114 115 t.column "organization", :string 115 116 t.column "confirmed", :boolean, :default => false
