spc-pleroma/lib/pleroma/emails/admin_email.ex

70 lines
1.8 KiB
Elixir
Raw Normal View History

2019-02-20 16:51:25 +00:00
# Pleroma: A lightweight social networking server
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Emails.AdminEmail do
2019-02-20 16:51:25 +00:00
@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_notify_email do
Keyword.get(instance_config(), :notify_email, instance_config()[:email])
end
2019-02-20 16:51:25 +00:00
defp user_url(user) do
2019-12-06 06:32:29 +00:00
Helpers.user_feed_url(Pleroma.Web.Endpoint, :feed_redirect, user.id)
2019-02-20 16:51:25 +00:00
end
def report(to, reporter, account, statuses, comment) do
comment_html =
if comment do
"<p>Comment: #{comment}"
else
""
end
statuses_html =
2019-05-16 19:09:18 +00:00
if is_list(statuses) && length(statuses) > 0 do
2019-02-20 16:51:25 +00:00
statuses_list_html =
statuses
|> 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>"
2019-02-20 16:51:25 +00:00
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_notify_email()})
2019-02-20 16:51:25 +00:00
|> subject("#{instance_name()} Report")
|> html_body(html_body)
end
end