Bonjour,
Je travaille sur un plugin qui filtre tous les sujets en fonction de l’endroit où le sujet a été publié et du groupe auquel appartient l’utilisateur qui consulte le sujet. Le cas d’usage ici est d’avoir une équipe de support dans différents pays qui gère les questions provenant de leurs propres régions.
Je suis un nouveau créateur de plugins Discourse et j’apprends encore comment faire cela. La localisation des sujets sera gérée par le plugin Locations ici : Locations Plugin 🌍
Je vais ajouter les utilisateurs qui doivent bénéficier de cette vue filtrée à un groupe nommé quelque chose comme NA_queue ou EU_queue.
Le plugin vérifiera si l’utilisateur est connecté et si un groupe principal est défini. Si c’est le cas, il filtrera tous les sujets pour qu’ils correspondent à la file d’attente à laquelle l’utilisateur actuel appartient.
Je pense que cela pourrait être réalisé avec quelque chose de similaire au code suivant :
after_initialize do
require_dependency ‘topic_query’
# Si connecté et avec un groupe principal défini
# Nécessite d'obtenir le groupe principal de l'utilisateur
# Nécessite d'obtenir la localisation du sujet
TopicQuery.add_custom_filter(:location) do |results, topic_query|
filter = "REQUÊTE SQL ICI"
results = results.joins("{filter}")
results
end
Est-ce une bonne approche pour résoudre mon problème ?
Aussi, quelqu’un a-t-il des suggestions sur ce que serait la requête SQL ou sur la manière d’obtenir ces deux informations commentées ?