Class: InviteMailer

Inherits:
ActionMailer::Base
  • Object
show all
Includes:
Email::BuildEmailHelper
Defined in:
app/mailers/invite_mailer.rb

Instance Method Summary collapse

Methods included from Email::BuildEmailHelper

#build_email

Instance Method Details

#send_invite(invite, invite_to_topic: false) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'app/mailers/invite_mailer.rb', line 8

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 =
    (
      if invite.custom_message.present?
        ActionView::Base.full_sanitizer.sanitize(invite.custom_message.gsub(/\n+/, " ").strip)
      else
        nil
      end
    )

  # If they were invited to a topic
  if invite_to_topic && first_topic.present?
    # get topic excerpt
    topic_excerpt = ""
    topic_excerpt = first_topic.excerpt.tr("\n", " ") if first_topic.excerpt

    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: invite.link(with_email_token: true),
      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: invite.link(with_email_token: true),
      site_description: SiteSetting.site_description,
      site_title: SiteSetting.title,
      user_custom_message: sanitized_message,
    )
  end
end

#send_password_instructions(user) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
# File 'app/mailers/invite_mailer.rb', line 65

def send_password_instructions(user)
  if user.present?
    email_token =
      user.email_tokens.create!(email: user.email, scope: EmailToken.scopes[:password_reset])
    build_email(
      user.email,
      template: "invite_password_instructions",
      email_token: email_token.token,
    )
  end
end