mirror of
https://github.com/discourse/discourse.git
synced 2024-12-04 16:43:39 +08:00
fb19ee9eee
It was used both when inviting from a topic page and when creating invites with "Send to topic on first login", while it should be used only in the former case.
67 lines
2.5 KiB
Ruby
67 lines
2.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class InviteMailer < ActionMailer::Base
|
|
include Email::BuildEmailHelper
|
|
|
|
layout 'email_template'
|
|
|
|
def send_invite(invite, invite_to_topic: false)
|
|
# Find the first topic they were invited to
|
|
first_topic = invite.topics.order(:created_at).first
|
|
|
|
# get invitee name (based on site setting)
|
|
inviter_name = invite.invited_by.username
|
|
if SiteSetting.enable_names && invite.invited_by.name.present?
|
|
inviter_name = "#{invite.invited_by.name} (#{invite.invited_by.username})"
|
|
end
|
|
|
|
sanitized_message = invite.custom_message.present? ?
|
|
ActionView::Base.full_sanitizer.sanitize(invite.custom_message.gsub(/\n+/, " ").strip) : nil
|
|
|
|
# If they were invited to a topic
|
|
if invite_to_topic && first_topic.present?
|
|
# get topic excerpt
|
|
topic_excerpt = ""
|
|
if first_topic.excerpt
|
|
topic_excerpt = first_topic.excerpt.tr("\n", " ")
|
|
end
|
|
|
|
topic_title = first_topic.try(:title)
|
|
if SiteSetting.private_email?
|
|
topic_title = I18n.t("system_messages.private_topic_title", id: first_topic.id)
|
|
topic_excerpt = ""
|
|
end
|
|
|
|
build_email(invite.email,
|
|
template: sanitized_message ? 'custom_invite_mailer' : 'invite_mailer',
|
|
inviter_name: inviter_name,
|
|
site_domain_name: Discourse.current_hostname,
|
|
invite_link: "#{Discourse.base_url}/invites/#{invite.invite_key}",
|
|
topic_title: topic_title,
|
|
topic_excerpt: topic_excerpt,
|
|
site_description: SiteSetting.site_description,
|
|
site_title: SiteSetting.title,
|
|
user_custom_message: sanitized_message)
|
|
else
|
|
build_email(invite.email,
|
|
template: sanitized_message ? 'custom_invite_forum_mailer' : 'invite_forum_mailer',
|
|
inviter_name: inviter_name,
|
|
site_domain_name: Discourse.current_hostname,
|
|
invite_link: "#{Discourse.base_url}/invites/#{invite.invite_key}",
|
|
site_description: SiteSetting.site_description,
|
|
site_title: SiteSetting.title,
|
|
user_custom_message: sanitized_message)
|
|
end
|
|
end
|
|
|
|
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
|
|
|
|
end
|