Certamente, ma sarebbe bello averlo.
Comunque, sembra che questo farebbe il lavoro finché si codificano in modo fisso l’ID della categoria e il nome del gruppo.
Qualche vero programmatore può espandere questo in modo da poter impostare quelle variabili dalla pagina delle impostazioni del plugin?
# name: discourse-auto-remove-group
# version: 0.1
# authors: tknospdr
# url: https://github.com/tknospdr/discourse-auto-remove-group
enabled_site_setting :auto_remove_group_enabled
# Impostazione del sito per abilitare/disabilitare il plugin
register_site_setting :auto_remove_group_enabled, type: :boolean, default: false
register_site_setting :auto_remove_group_category_id, type: :integer, default: 0
register_site_setting :auto_remove_group_name, type: :string, default: ""
after_initialize do
# Ascolta gli eventi di creazione dei post
DiscourseEvent.on(:post_created) do |post|
next unless SiteSetting.auto_remove_group_enabled
next unless post&.user # Assicurati che il post abbia un utente
next unless post&.topic&.category_id # Assicurati che il post sia in una categoria
target_category_id = SiteSetting.auto_remove_group_category_id
group_name = SiteSetting.auto_remove_group_name
# Controlla se il post è nella categoria configurata
if post.topic.category_id == target_category_id
begin
group = Group.find_by(name: group_name)
unless group
Rails.logger.error("AutoRemoveGroup: Gruppo '#{group_name}' non trovato")
next
end
user = post.user
if group.users.include?(user)
group.remove(user)
Rails.logger.info("AutoRemoveGroup: Utente #{user.username} rimosso dal gruppo #{group_name} dopo aver postato nella categoria #{target_category_id}")
else
Rails.logger.info("AutoRemoveGroup: Utente #{user.username} non è nel gruppo #{group_name}, nessuna azione intrapresa")
end
rescue StandardError => e
Rails.logger.error("AutoRemoveGroup: Errore durante la rimozione dell'utente dal gruppo: #{e.message}")
end
end
end
end