|
|
@@ -13,44 +13,46 @@ defmodule Pleroma.Workers.NewUsersDigestWorker do |
|
|
|
|
|
|
|
@impl Oban.Worker |
|
|
|
def perform(_args, _job) do |
|
|
|
today = NaiveDateTime.utc_now() |> Timex.beginning_of_day() |
|
|
|
|
|
|
|
a_day_ago = |
|
|
|
today |
|
|
|
|> Timex.shift(days: -1) |
|
|
|
|> Timex.beginning_of_day() |
|
|
|
|
|
|
|
users_and_statuses = |
|
|
|
%{ |
|
|
|
local: true, |
|
|
|
order_by: :inserted_at |
|
|
|
} |
|
|
|
if Pleroma.Config.get([Pleroma.Emails.NewUsersDigestEmail, :enabled]) do |
|
|
|
today = NaiveDateTime.utc_now() |> Timex.beginning_of_day() |
|
|
|
|
|
|
|
a_day_ago = |
|
|
|
today |
|
|
|
|> Timex.shift(days: -1) |
|
|
|
|> Timex.beginning_of_day() |
|
|
|
|
|
|
|
users_and_statuses = |
|
|
|
%{ |
|
|
|
local: true, |
|
|
|
order_by: :inserted_at |
|
|
|
} |
|
|
|
|> User.Query.build() |
|
|
|
|> where([u], u.inserted_at >= ^a_day_ago and u.inserted_at < ^today) |
|
|
|
|> Repo.all() |
|
|
|
|> Enum.map(fn user -> |
|
|
|
latest_status = |
|
|
|
Activity |
|
|
|
|> Activity.Queries.by_actor(user.ap_id) |
|
|
|
|> Activity.Queries.by_type("Create") |
|
|
|
|> Activity.with_preloaded_object() |
|
|
|
|> order_by(desc: :inserted_at) |
|
|
|
|> limit(1) |
|
|
|
|> Repo.one() |
|
|
|
|
|
|
|
total_statuses = |
|
|
|
Activity |
|
|
|
|> Activity.Queries.by_actor(user.ap_id) |
|
|
|
|> Activity.Queries.by_type("Create") |
|
|
|
|> Repo.aggregate(:count, :id) |
|
|
|
|
|
|
|
{user, total_statuses, latest_status} |
|
|
|
end) |
|
|
|
|
|
|
|
%{is_admin: true} |
|
|
|
|> User.Query.build() |
|
|
|
|> where([u], u.inserted_at >= ^a_day_ago and u.inserted_at < ^today) |
|
|
|
|> Repo.all() |
|
|
|
|> Enum.map(fn user -> |
|
|
|
latest_status = |
|
|
|
Activity |
|
|
|
|> Activity.Queries.by_actor(user.ap_id) |
|
|
|
|> Activity.Queries.by_type("Create") |
|
|
|
|> Activity.with_preloaded_object() |
|
|
|
|> order_by(desc: :inserted_at) |
|
|
|
|> limit(1) |
|
|
|
|> Repo.one() |
|
|
|
|
|
|
|
total_statuses = |
|
|
|
Activity |
|
|
|
|> Activity.Queries.by_actor(user.ap_id) |
|
|
|
|> Activity.Queries.by_type("Create") |
|
|
|
|> Repo.aggregate(:count, :id) |
|
|
|
|
|
|
|
{user, total_statuses, latest_status} |
|
|
|
end) |
|
|
|
|
|
|
|
%{is_admin: true} |
|
|
|
|> User.Query.build() |
|
|
|
|> Repo.all() |
|
|
|
|> Enum.map(&Pleroma.Emails.NewUsersDigestEmail.new_users(&1, users_and_statuses)) |
|
|
|
|> Enum.each(&Pleroma.Emails.Mailer.deliver/1) |
|
|
|
|> Enum.map(&Pleroma.Emails.NewUsersDigestEmail.new_users(&1, users_and_statuses)) |
|
|
|
|> Enum.each(&Pleroma.Emails.Mailer.deliver/1) |
|
|
|
end |
|
|
|
end |
|
|
|
end |