grep -rl '# Copyright © .* Pleroma' * | xargs sed -i 's;Copyright © .* Pleroma .*;Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>;'
		
			
				
	
	
		
			87 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
# Pleroma: A lightweight social networking server
 | 
						|
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 | 
						|
# SPDX-License-Identifier: AGPL-3.0-only
 | 
						|
 | 
						|
defmodule Mix.Tasks.Pleroma.NotificationSettings do
 | 
						|
  @shortdoc "Enable&Disable privacy option for push notifications"
 | 
						|
  @moduledoc """
 | 
						|
  Example:
 | 
						|
 | 
						|
  > mix pleroma.notification_settings --hide-notification-contents=false --nickname-users="parallel588"  # set false only for parallel588 user
 | 
						|
  > mix pleroma.notification_settings --hide-notification-contents=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: [
 | 
						|
          hide_notification_contents: :boolean,
 | 
						|
          email_users: :string,
 | 
						|
          nickname_users: :string
 | 
						|
        ]
 | 
						|
      )
 | 
						|
 | 
						|
    hide_notification_contents = Keyword.get(options, :hide_notification_contents)
 | 
						|
 | 
						|
    if not is_nil(hide_notification_contents) do
 | 
						|
      hide_notification_contents
 | 
						|
      |> build_query(options)
 | 
						|
      |> Pleroma.Repo.update_all([])
 | 
						|
    end
 | 
						|
 | 
						|
    shell_info("Done")
 | 
						|
  end
 | 
						|
 | 
						|
  defp build_query(hide_notification_contents, options) do
 | 
						|
    query =
 | 
						|
      from(u in Pleroma.User,
 | 
						|
        update: [
 | 
						|
          set: [
 | 
						|
            notification_settings:
 | 
						|
              fragment(
 | 
						|
                "jsonb_set(notification_settings, '{hide_notification_contents}', ?)",
 | 
						|
                ^hide_notification_contents
 | 
						|
              )
 | 
						|
          ]
 | 
						|
        ]
 | 
						|
      )
 | 
						|
 | 
						|
    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
 |