trabajo-afectivo/lib/notification_factory.rb

66 lines
1.6 KiB
Ruby
Raw Normal View History

module NotificationFactory
def self.build(data)
2013-01-03 10:47:39 +00:00
data[:string].gsub!( /\#\{(.+?)\}/ ) { |s|
2012-10-02 05:46:08 +00:00
# use quoted text
callback = $1
callback.gsub!( /\.body$/ ) { |item|
item = item + '.word_wrap( :line_width => 82 ).message_quote.chomp'
}
# use config params
callback.gsub!( /^config\.(.+?)$/ ) { |item|
name = $1
item = "Setting.get('#{$1}')"
}
# use object params
callback.gsub!( /^(.+?)(\..+?)$/ ) { |item|
object_name = $1
object_method = $2
replace = nil
if data[:objects][object_name.to_sym]
replace = "data[:objects]['#{object_name}'.to_sym]#{object_method}"
2013-01-03 10:47:39 +00:00
else
replace = $1 + $2
end
item = replace
}
# replace value
2013-01-03 10:47:39 +00:00
begin
s = eval callback
rescue Exception => e
Rails.logger.error "can't eval #{callback}"
Rails.logger.error e.inspect
end
}
# translate
data[:string].gsub!( /i18n\((.+?)\)/ ) { |s|
string = $1
locale = data[:locale] || 'en'
s = Translation.translate( locale, string )
}
return data[:string]
end
2012-10-02 05:46:08 +00:00
def self.send(data)
sender = Setting.get('notification_sender')
a = Channel::IMAP.new
2013-01-03 10:47:39 +00:00
Rails.logger.info "NOTICE: SEND NOTIFICATION TO: #{data[:recipient][:email]}"
message = a.send(
{
# :in_reply_to => self.in_reply_to,
:from => sender,
:to => data[:recipient][:email],
:subject => data[:subject],
:body => data[:body],
},
true
)
end
end