module MailControl::LoggedEmail::ClassMethods
Public Instance Methods
mailing(name, &block)
click to toggle source
Defines a new LoggedEmail2 type and registers a definition
@param [ String ] name The name of the mailing
@example Define a new mailing
mailing(:enquiry) do actor :user, :cache => [:full_name] act_object :enquiry, :cache => [:subject] act_target :listing, :cache => [:title] end
@return [Definition] Returns the registered definition
# File lib/mail-control/logged_email.rb, line 55 def mailing(name, &block) definition = MailControl::DefinitionDSL.new(name) definition.instance_eval(&block) MailControl::Definition.register(definition) end
poll_for_changes() { |verb, changes_for_target| ... }
click to toggle source
# File lib/mail-control/logged_email.rb, line 18 def poll_for_changes() #if block_given? ::LoggedEmail.where('state = ? AND send_after <= ?', 'initial', Time.now).select(:act_target_id).uniq.each do |cur_target| target_id = cur_target['act_target_id'] ::LoggedEmail.where('state = ? AND act_target_id = ? AND send_after <= ?', 'initial', target_id, Time.now).select(:verb).uniq.each do |verb| changes_for_target = ::LoggedEmail.where(:act_target_id => target_id, :state => 'initial', :verb => verb['verb'].to_s) yield verb, changes_for_target changes_for_target.each do |cft| cft.update_attributes(:state => 'complete') end end end end
send_email(verb, data)
click to toggle source
Publishes an mailing using an mailing name and data
@param [ String ] verb The verb of the mailing @param [ Hash ] data The data to initialize the mailing with.
@return [MailControl::LoggedEmail2] An LoggedEmail
instance with data
# File lib/mail-control/logged_email.rb, line 67 def send_email(verb, data) new.send_email({:verb => verb}.merge(data)) end