2019-05-03 06:17:27 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
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
|
|
|
|
2019-07-31 03:05:08 +08:00
|
|
|
layout "email_template"
|
2016-06-06 01:22:46 +08:00
|
|
|
|
2021-03-16 23:08:54 +08:00
|
|
|
def send_invite(invite, invite_to_topic: false)
|
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)
|
2017-12-04 16:29:24 +08:00
|
|
|
inviter_name = invite.invited_by.username
|
2015-02-06 00:43:30 +08:00
|
|
|
if SiteSetting.enable_names && invite.invited_by.name.present?
|
2017-12-04 16:29:24 +08:00
|
|
|
inviter_name = "#{invite.invited_by.name} (#{invite.invited_by.username})"
|
2014-07-10 13:27:40 +08:00
|
|
|
end
|
|
|
|
|
2019-07-06 02:51:03 +08:00
|
|
|
sanitized_message =
|
2023-01-09 20:20:10 +08:00
|
|
|
(
|
2019-07-06 02:51:03 +08:00
|
|
|
if invite.custom_message.present?
|
|
|
|
ActionView::Base.full_sanitizer.sanitize(invite.custom_message.gsub(/\n+/, " ").strip)
|
2023-01-09 20:20:10 +08:00
|
|
|
else
|
2019-07-06 02:51:03 +08:00
|
|
|
nil
|
2023-01-09 20:20:10 +08:00
|
|
|
end
|
|
|
|
)
|
2019-07-06 02:51:03 +08:00
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
# If they were invited to a topic
|
2021-03-16 23:08:54 +08:00
|
|
|
if invite_to_topic && first_topic.present?
|
2014-07-09 01:03:11 +08:00
|
|
|
# get topic excerpt
|
|
|
|
topic_excerpt = ""
|
2016-06-11 10:37:33 +08:00
|
|
|
topic_excerpt = first_topic.excerpt.tr("\n", " ") if first_topic.excerpt
|
2014-07-09 01:03:11 +08:00
|
|
|
|
2017-04-25 03:26:06 +08:00
|
|
|
topic_title = first_topic.try(:title)
|
|
|
|
if SiteSetting.private_email?
|
2017-04-27 23:45:49 +08:00
|
|
|
topic_title = I18n.t("system_messages.private_topic_title", id: first_topic.id)
|
2017-04-25 03:26:06 +08:00
|
|
|
topic_excerpt = ""
|
|
|
|
end
|
|
|
|
|
2013-11-07 01:56:26 +08:00
|
|
|
build_email(
|
|
|
|
invite.email,
|
2019-07-06 02:51:03 +08:00
|
|
|
template: sanitized_message ? "custom_invite_mailer" : "invite_mailer",
|
2017-12-04 16:29:24 +08:00
|
|
|
inviter_name: inviter_name,
|
2014-07-10 12:33:09 +08:00
|
|
|
site_domain_name: Discourse.current_hostname,
|
2021-04-14 17:15:56 +08:00
|
|
|
invite_link: invite.link(with_email_token: true),
|
2017-04-25 03:26:06 +08:00
|
|
|
topic_title: topic_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,
|
2016-06-08 20:34:25 +08:00
|
|
|
site_title: SiteSetting.title,
|
2019-07-06 02:51:03 +08:00
|
|
|
user_custom_message: sanitized_message,
|
|
|
|
)
|
2013-11-07 01:56:26 +08:00
|
|
|
else
|
|
|
|
build_email(
|
|
|
|
invite.email,
|
2019-07-06 02:51:03 +08:00
|
|
|
template: sanitized_message ? "custom_invite_forum_mailer" : "invite_forum_mailer",
|
2017-12-04 16:29:24 +08:00
|
|
|
inviter_name: inviter_name,
|
2014-07-10 13:27:40 +08:00
|
|
|
site_domain_name: Discourse.current_hostname,
|
2021-04-14 17:15:56 +08:00
|
|
|
invite_link: invite.link(with_email_token: true),
|
2014-06-15 06:49:19 +08:00
|
|
|
site_description: SiteSetting.site_description,
|
2016-06-08 20:34:25 +08:00
|
|
|
site_title: SiteSetting.title,
|
2019-07-06 02:51:03 +08:00
|
|
|
user_custom_message: sanitized_message,
|
|
|
|
)
|
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?
|
2021-11-25 15:34:39 +08:00
|
|
|
email_token =
|
|
|
|
user.email_tokens.create!(email: user.email, scope: EmailToken.scopes[:password_reset])
|
2014-10-10 23:47:52 +08:00
|
|
|
build_email(
|
|
|
|
user.email,
|
|
|
|
template: "invite_password_instructions",
|
|
|
|
email_token: email_token.token,
|
|
|
|
)
|
|
|
|
end
|
|
|
|
end
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|