Module: MailControl::LoggedEmail::ClassMethods

Defined in:
lib/mail-control/logged_email.rb

Instance Method Summary collapse

Instance Method Details

#mailing(name, &block) ⇒ Definition

Defines a new LoggedEmail2 type and registers a definition

Examples:

Define a new mailing

mailing(:enquiry) do
  actor :user, :cache => [:full_name]
  act_object :enquiry, :cache => [:subject]
  act_target :listing, :cache => [:title]
end

Parameters:

  • name (String)

    The name of the mailing

Returns:

  • (Definition)

    Returns the registered definition



55
56
57
58
59
# 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_changesObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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) ⇒ MailControl::LoggedEmail2

Publishes an mailing using an mailing name and data

Parameters:

  • verb (String)

    The verb of the mailing

  • data (Hash)

    The data to initialize the mailing with.

Returns:

  • (MailControl::LoggedEmail2)

    An LoggedEmail instance with data



67
68
69
# File 'lib/mail-control/logged_email.rb', line 67

def send_email(verb, data)
  new.send_email({:verb => verb}.merge(data))
end