Les communautés Discourse ont souvent besoin d’automatiser l’appartenance aux groupes en fonction de conditions telles que la possession d’un badge ou l’appartenance à des groupes existants.
Les cas d’utilisation courants incluent :
Utilisateurs n’appartenant pas au groupe « abonnés »
Utilisateurs n’étant pas bannis de la publication dans Marketplace
Utilisateurs au niveau de confiance 0 ou 1, mais pas au niveau de confiance 2
Utilisateurs ayant terminé le tutoriel des nouveaux utilisateurs ou étant membres depuis plus d’un an
Utilisateurs appartenant à client_1, client_2 ou client_3 et n’étant pas stagiaires
Auparavant, la résolution de ce problème nécessitait des scripts personnalisés qui synchronisaient périodiquement les groupes. Le plugin Dynamic Groups élimine ce besoin.
Ce plugin introduit un champ d’expression booléenne dans les paramètres du groupe, permettant aux administrateurs de définir des règles qui déterminent dynamiquement l’appartenance aux groupes.
Exemples :
utilisateurs qui n’appartiennent pas au groupe « abonnés » trust_level_0 AND NOT subscribers
utilisateurs qui ne sont pas bannis de la publication dans Marketplace trust_level_2 AND NOT banned_users
utilisateurs qui sont au niveau de confiance 0 ou 1 mais pas au niveau de confiance 2 trust_level_0 AND NOT trust_level_2
utilisateurs qui ont terminé le tutoriel des nouveaux utilisateurs ou sont membres depuis plus d’un an badge:certified OR badge:anniversary
utilisateurs qui appartiennent aux clients 1, 2 ou 3 et ne sont pas stagiaires (client_1 OR client_2 OR client_3) AND NOT interns
Configuration
Une fois le plugin installé et activé, un nouvel onglet apparaîtra dans l’interface d’administration des groupes :
Lorsque vous entrez ou mettez à jour l’expression booléenne, le système prendra quelques instants pour remplir le groupe avec les utilisateurs correspondants. À partir de ce moment, l’appartenance au groupe sera automatiquement mise à jour à mesure que le statut des utilisateurs change.
Important :
Lorsqu’une règle est définie, le groupe est marqué comme automatique, désactivant les modifications manuelles des membres. Pour revenir à la gestion manuelle du groupe, il suffit de vider le champ d’expression. Les membres existants resteront, et vous retrouverez le contrôle manuel.
Bonjour, merci d’avoir développé ce plugin super utile !
J’utilise actuellement Discourse Dynamic Groups pour ajouter automatiquement tous les utilisateurs non anonymes à un groupe spécial. Mon expression booléenne est :
NOT anonymous_users
Comportement attendu :
Lorsqu’un nouvel utilisateur s’inscrit (et n’appartient pas au groupe anonymous_users), il devrait être automatiquement ajouté à ce groupe, sans aucune intervention manuelle.
Comportement actuel :
Les nouveaux utilisateurs inscrits ne sont pas immédiatement ajoutés au groupe. Ils ne sont ajoutés qu’après que j’ai manuellement réenregistré l’expression booléenne dans les paramètres du groupe.
Cela signifie que le groupe n’est pas mis à jour automatiquement lorsque des utilisateurs le rejoignent, sauf si je déclenche une synchronisation manuelle.
Je reçois l’erreur : Unknown keyword, group or badge: 'anonymous_users'
Si je change le nom du groupe avec mon groupe actuel, par exemple :
trust_level_0 AND NOT interns
Je reçois toujours : Unknown keyword, group or badge: 'interns'
J’ai vérifié et je copie le nom unique du groupe directement depuis la page d’administration du groupe, donc il n’y a pas de fautes de frappe.
Y a-t-il quelque chose que je pourrais manquer, ou y a-t-il autre chose que je dois configurer pour que les groupes personnalisés soient reconnus dans l’expression ?
En essayant de reproduire, j’ai identifié deux bugs et l’un d’eux vous a probablement touché. Veuillez mettre à jour le plugin vers la dernière version 59640f1 et voir si cela résout le problème.
Le plugin ne gère toujours pas très bien le renommage des groupes. Si vous renommez un groupe, vous devez enregistrer les règles de tous les groupes qui en dépendent (entrez simplement un espace après l’expression booléenne et supprimez-le à nouveau pour activer le bouton Enregistrer). Ceci sera corrigé dans une version ultérieure.
Les utilisateurs ayant le niveau de confiance 1 sont également membres du groupe de niveau de confiance 0. Le comportement est donc attendu. Vous pourriez exclure le groupe de niveau de confiance 1 pour n’obtenir que les utilisateurs TL0. Similaire à l’exemple du premier message