discourse/app/models/user_email_observer.rb

69 lines
2.5 KiB
Ruby
Raw Normal View History

2013-02-05 13:16:51 -06:00
class UserEmailObserver < ActiveRecord::Observer
observe :notification
def after_commit(notification)
2013-07-21 11:50:01 -05:00
if rails4?
if notification.send(:transaction_include_any_action?, [:create])
notification_type = Notification.types[notification.notification_type]
2013-02-05 13:16:51 -06:00
2013-07-21 11:50:01 -05:00
# Delegate to email_user_{{NOTIFICATION_TYPE}} if exists
email_method = :"email_user_#{notification_type.to_s}"
send(email_method, notification) if respond_to?(email_method)
end
else
if notification.send(:transaction_include_action?, :create)
notification_type = Notification.types[notification.notification_type]
# Delegate to email_user_{{NOTIFICATION_TYPE}} if exists
email_method = :"email_user_#{notification_type.to_s}"
send(email_method, notification) if respond_to?(email_method)
end
2013-02-05 13:16:51 -06:00
end
end
def email_user_mentioned(notification)
return unless notification.user.email_direct?
2013-02-07 09:45:24 -06:00
Jobs.enqueue_in(SiteSetting.email_time_window_mins.minutes,
:user_email,
type: :user_mentioned,
2013-02-05 13:16:51 -06:00
user_id: notification.user_id,
notification_id: notification.id)
end
def email_user_posted(notification)
return unless notification.user.email_direct?
Jobs.enqueue_in(SiteSetting.email_time_window_mins.minutes,
:user_email,
type: :user_posted,
user_id: notification.user_id,
notification_id: notification.id)
end
2013-02-05 13:16:51 -06:00
def email_user_quoted(notification)
return unless notification.user.email_direct?
2013-02-07 09:45:24 -06:00
Jobs.enqueue_in(SiteSetting.email_time_window_mins.minutes,
:user_email,
type: :user_quoted,
2013-02-05 13:16:51 -06:00
user_id: notification.user_id,
notification_id: notification.id)
end
def email_user_replied(notification)
return unless notification.user.email_direct?
2013-02-07 09:45:24 -06:00
Jobs.enqueue_in(SiteSetting.email_time_window_mins.minutes,
:user_email,
type: :user_replied,
2013-02-05 13:16:51 -06:00
user_id: notification.user_id,
notification_id: notification.id)
end
def email_user_invited_to_private_message(notification)
return unless notification.user.email_direct?
2013-02-07 09:45:24 -06:00
Jobs.enqueue_in(SiteSetting.email_time_window_mins.minutes,
:user_email,
type: :user_invited_to_private_message,
2013-02-05 13:16:51 -06:00
user_id: notification.user_id,
notification_id: notification.id)
end
end