admin_email.ex 1.72 KB
Newer Older
minibikini's avatar
Reports  
minibikini committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Pleroma: A lightweight social networking server
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.AdminEmail do
  @moduledoc "Admin emails"

  import Swoosh.Email

  alias Pleroma.Web.Router.Helpers

  defp instance_config, do: Pleroma.Config.get(:instance)
  defp instance_name, do: instance_config()[:name]
  defp instance_email, do: instance_config()[:email]

  defp user_url(user) do
    Helpers.o_status_url(Pleroma.Web.Endpoint, :feed_redirect, user.nickname)
  end

  def report(to, reporter, account, statuses, comment) do
    comment_html =
      if comment do
        "<p>Comment: #{comment}"
      else
        ""
      end

    statuses_html =
      if length(statuses) > 0 do
        statuses_list_html =
          statuses
32
33
34
35
36
37
38
          |> Enum.map(fn
            %{id: id} ->
              status_url = Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, id)
              "<li><a href=\"#{status_url}\">#{status_url}</li>"

            id when is_binary(id) ->
              "<li><a href=\"#{id}\">#{id}</li>"
minibikini's avatar
Reports  
minibikini committed
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
64
65
66
67
          end)
          |> Enum.join("\n")

        """
        <p> Statuses:
          <ul>
            #{statuses_list_html}
          </ul>
        </p>
        """
      else
        ""
      end

    html_body = """
    <p>Reported by: <a href="#{user_url(reporter)}">#{reporter.nickname}</a></p>
    <p>Reported Account: <a href="#{user_url(account)}">#{account.nickname}</a></p>
    #{comment_html}
    #{statuses_html}
    """

    new()
    |> to({to.name, to.email})
    |> from({instance_name(), instance_email()})
    |> reply_to({reporter.name, reporter.email})
    |> subject("#{instance_name()} Report")
    |> html_body(html_body)
  end
end