2013-06-11 04:46:08 +08:00
|
|
|
require_dependency 'email/message_builder'
|
2013-02-06 03:16:51 +08:00
|
|
|
|
|
|
|
class InviteMailer < ActionMailer::Base
|
2013-06-11 04:46:08 +08:00
|
|
|
include Email::BuildEmailHelper
|
2013-02-07 23:45:24 +08:00
|
|
|
|
2016-06-06 01:22:46 +08:00
|
|
|
class UserNotificationRenderer < ActionView::Base
|
|
|
|
include UserNotificationsHelper
|
|
|
|
end
|
|
|
|
|
|
|
|
def send_invite(invite, custom_message=nil)
|
2013-02-06 03:16:51 +08:00
|
|
|
# Find the first topic they were invited to
|
|
|
|
first_topic = invite.topics.order(:created_at).first
|
|
|
|
|
2014-07-10 13:27:40 +08:00
|
|
|
# get invitee name (based on site setting)
|
|
|
|
invitee_name = invite.invited_by.username
|
2015-02-06 00:43:30 +08:00
|
|
|
if SiteSetting.enable_names && invite.invited_by.name.present?
|
2014-07-10 13:27:40 +08:00
|
|
|
invitee_name = "#{invite.invited_by.name} (#{invite.invited_by.username})"
|
|
|
|
end
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
# If they were invited to a topic
|
2013-11-07 01:56:26 +08:00
|
|
|
if first_topic.present?
|
2014-07-09 01:03:11 +08:00
|
|
|
# get topic excerpt
|
|
|
|
topic_excerpt = ""
|
|
|
|
if first_topic.excerpt
|
|
|
|
topic_excerpt = first_topic.excerpt.gsub("\n", " ")
|
|
|
|
end
|
|
|
|
|
2013-11-07 01:56:26 +08:00
|
|
|
build_email(invite.email,
|
|
|
|
template: 'invite_mailer',
|
2014-07-09 01:03:11 +08:00
|
|
|
invitee_name: invitee_name,
|
2014-07-10 12:33:09 +08:00
|
|
|
site_domain_name: Discourse.current_hostname,
|
2013-11-07 01:56:26 +08:00
|
|
|
invite_link: "#{Discourse.base_url}/invites/#{invite.invite_key}",
|
2014-06-15 06:49:19 +08:00
|
|
|
topic_title: first_topic.try(:title),
|
2014-07-09 01:03:11 +08:00
|
|
|
topic_excerpt: topic_excerpt,
|
2014-06-15 06:49:19 +08:00
|
|
|
site_description: SiteSetting.site_description,
|
|
|
|
site_title: SiteSetting.title)
|
2013-11-07 01:56:26 +08:00
|
|
|
else
|
2016-06-06 01:22:46 +08:00
|
|
|
html = nil
|
|
|
|
if custom_message.present? && custom_message =~ /{invite_link}/
|
|
|
|
custom_message.gsub!("{invite_link}", "#{Discourse.base_url}/invites/#{invite.invite_key}")
|
|
|
|
custom_message.gsub!("{site_title}", SiteSetting.title) if custom_message =~ /{site_title}/
|
|
|
|
custom_message.gsub!("{site_description}", SiteSetting.site_description) if custom_message =~ /{site_description}/
|
|
|
|
|
|
|
|
html = UserNotificationRenderer.new(Rails.configuration.paths["app/views"]).render(
|
|
|
|
template: 'email/invite',
|
|
|
|
format: :html,
|
|
|
|
locals: { message: PrettyText.cook(custom_message).html_safe,
|
|
|
|
classes: 'custom-invite-email' }
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
2013-11-07 01:56:26 +08:00
|
|
|
build_email(invite.email,
|
|
|
|
template: 'invite_forum_mailer',
|
2016-06-06 01:22:46 +08:00
|
|
|
html_override: html,
|
2014-07-10 13:27:40 +08:00
|
|
|
invitee_name: invitee_name,
|
|
|
|
site_domain_name: Discourse.current_hostname,
|
2014-06-15 06:49:19 +08:00
|
|
|
invite_link: "#{Discourse.base_url}/invites/#{invite.invite_key}",
|
|
|
|
site_description: SiteSetting.site_description,
|
|
|
|
site_title: SiteSetting.title)
|
2013-11-07 01:56:26 +08:00
|
|
|
end
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|
|
|
|
|
2014-10-10 23:47:52 +08:00
|
|
|
def send_password_instructions(user)
|
|
|
|
if user.present?
|
|
|
|
email_token = user.email_tokens.create(email: user.email)
|
|
|
|
build_email(user.email,
|
|
|
|
template: 'invite_password_instructions',
|
|
|
|
email_token: email_token.token)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|