|
|
@@ -0,0 +1,83 @@ |
|
|
|
defmodule Mix.Tasks.Pleroma.NotificationSettings do |
|
|
|
@shortdoc "Enable&Disable privacy option for push notifications" |
|
|
|
@moduledoc """ |
|
|
|
Example: |
|
|
|
|
|
|
|
> mix pleroma.notification_settings --privacy-option=false --nickname-users="parallel588" # set false only for parallel588 user |
|
|
|
> mix pleroma.notification_settings --privacy-option=true # set true for all users |
|
|
|
|
|
|
|
""" |
|
|
|
|
|
|
|
use Mix.Task |
|
|
|
import Mix.Pleroma |
|
|
|
import Ecto.Query |
|
|
|
|
|
|
|
def run(args) do |
|
|
|
start_pleroma() |
|
|
|
|
|
|
|
{options, _, _} = |
|
|
|
OptionParser.parse( |
|
|
|
args, |
|
|
|
strict: [ |
|
|
|
privacy_option: :boolean, |
|
|
|
email_users: :string, |
|
|
|
nickname_users: :string |
|
|
|
] |
|
|
|
) |
|
|
|
|
|
|
|
privacy_option = Keyword.get(options, :privacy_option) |
|
|
|
|
|
|
|
if not is_nil(privacy_option) do |
|
|
|
privacy_option |
|
|
|
|> build_query(options) |
|
|
|
|> Pleroma.Repo.update_all([]) |
|
|
|
end |
|
|
|
|
|
|
|
shell_info("Done") |
|
|
|
end |
|
|
|
|
|
|
|
defp build_query(privacy_option, options) do |
|
|
|
query = |
|
|
|
from(u in Pleroma.User, |
|
|
|
update: [ |
|
|
|
set: [ |
|
|
|
notification_settings: |
|
|
|
fragment( |
|
|
|
"jsonb_set(notification_settings, '{privacy_option}', ?)", |
|
|
|
^privacy_option |
|
|
|
) |
|
|
|
] |
|
|
|
] |
|
|
|
) |
|
|
|
|
|
|
|
user_emails = |
|
|
|
options |
|
|
|
|> Keyword.get(:email_users, "") |
|
|
|
|> String.split(",") |
|
|
|
|> Enum.map(&String.trim(&1)) |
|
|
|
|> Enum.reject(&(&1 == "")) |
|
|
|
|
|
|
|
query = |
|
|
|
if length(user_emails) > 0 do |
|
|
|
where(query, [u], u.email in ^user_emails) |
|
|
|
else |
|
|
|
query |
|
|
|
end |
|
|
|
|
|
|
|
user_nicknames = |
|
|
|
options |
|
|
|
|> Keyword.get(:nickname_users, "") |
|
|
|
|> String.split(",") |
|
|
|
|> Enum.map(&String.trim(&1)) |
|
|
|
|> Enum.reject(&(&1 == "")) |
|
|
|
|
|
|
|
query = |
|
|
|
if length(user_nicknames) > 0 do |
|
|
|
where(query, [u], u.nickname in ^user_nicknames) |
|
|
|
else |
|
|
|
query |
|
|
|
end |
|
|
|
|
|
|
|
query |
|
|
|
end |
|
|
|
end |