C’est sûr, mais ce serait cool à avoir.
Quoi qu’il en soit, il semble que cela ferait l’affaire tant que vous codez en dur l’ID de catégorie et le nom du groupe.
Des vrais codeurs peuvent-ils développer cela afin que vous puissiez définir ces variables à partir de la page des paramètres du 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
# Paramètre du site pour activer/désactiver le 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
# Écoute les événements de création de post
DiscourseEvent.on(:post_created) do |post|
next unless SiteSetting.auto_remove_group_enabled
next unless post&.user # S'assurer que le post a un utilisateur
next unless post&.topic&.category_id # S'assurer que le post est dans une catégorie
target_category_id = SiteSetting.auto_remove_group_category_id
group_name = SiteSetting.auto_remove_group_name
# Vérifier si le post est dans la catégorie configurée
if post.topic.category_id == target_category_id
begin
group = Group.find_by(name: group_name)
unless group
Rails.logger.error("AutoRemoveGroup: Groupe '#{group_name}' introuvable")
next
end
user = post.user
if group.users.include?(user)
group.remove(user)
Rails.logger.info("AutoRemoveGroup: Utilisateur #{user.username} retiré du groupe #{group_name} après avoir posté dans la catégorie #{target_category_id}")
else
Rails.logger.info("AutoRemoveGroup: L'utilisateur #{user.username} n'est pas dans le groupe #{group_name}, aucune action effectuée")
end
rescue StandardError => e
Rails.logger.error("AutoRemoveGroup: Erreur lors du retrait de l'utilisateur du groupe : #{e.message}")
end
end
end
end