Comment changer un utilisateur pour un rôle différent en fonction du nombre de ses messages?

7

Existe-t-il des techniques qui peuvent mettre un utilisateur dans un rôle spécifique dans un rôle différent automatiquement après avoir fait X nombre de messages (sujets principaux du forum ou / et réponses)?

J'aimerais implémenter une fonctionnalité où lorsque les utilisateurs s'inscrivent pour la première fois sur mon site, ils se voient attribuer un rôle qui dispose de privilèges limités, mais après un certain nombre de messages sur le forum (nouveau sujet ou réponses à l'existant), ils sont placés dans un autre rôle qui ne nécessite pas CAPTCHA et ils peuvent publier des liens, etc. Pour info en utilisant le noyau Forumet le module Advanced Forum .

Abeille
la source

Réponses:

9

J'ai trouvé un module Statistiques utilisateur qui s'intègre aux règles et fournit des jetons comme [utilisateur: post-comptage] qui peuvent être utilisés pour la comparaison numérique. J'espère que ceci aide quelqu'un d'autre.

Abeille
la source
2

Le module Statistiques utilisateur n'a qu'une version de développement pour D7 (je suppose que cette question concerne D7). Cependant, votre question semble être un cas d'utilisation parfait pour le module Goals (divulgation: j'en suis le responsable). Vous trouverez ci-dessous une configuration possible pour votre cas spécifique, en utilisant des objectifs .

Configurer un objectif

Accédez au chemin relatif admin/config/goals/manageet utilisez le lien "Ajouter un objectif" pour définir un seul objectif , avec une description (par exemple):

Faire X nombre de messages (sujets principaux du forum ou / et réponses) .

Configurer les tâches

Pour atteindre l' objectif "créer X nombre de messages (sujets principaux du forum ou / et réponses)", définissez la ou les tâches à effectuer.

  • Postez un certain nombre de sujets principaux sur le forum.
  • Postez un certain nombre de réponses.

Une manière plus avancée d'utiliser (configurer) les objectifs est de configurer des tâches comme ceci:

  • certaines tâches peuvent devoir être répétées plusieurs fois.
  • certaines tâches peuvent nécessiter un certain temps pour expirer entre 2 tâches similaires (par exemple: si une tâche est effectuée plusieurs fois par jour, seule la première compte).
  • ... (il y en a d'autres ...).

Suivre les progrès lors de l'exécution des tâches

Pour suivre les progrès réalisés par un seul utilisateur pour terminer une tâche, il vous suffit d'écrire les règles appropriées, à l'aide du module Règles , pour enregistrer les événements pertinents se produisant dans votre site, qui sont liés à l'achèvement des différentes tâches.

Pour les objectifs / tâches décrits ci-dessus à titre d'exemple, vous n'auriez besoin que de 2 règles (extrêmement basiques), qui seraient déclenchées comme suit:

  • Après avoir publié un sujet de forum principal.
  • Après avoir posté une réponse.

Notez que ces 2 règles peuvent être réutilisées pour mesurer les progrès sur plusieurs objectifs (par exemple, si votre objectif a une tâche comme "après avoir publié 1 réponse", et un 2ème objectif a une tâche comme "après avoir publié 10 réponses").

De plus, les défis ci-dessus sont assez simples (de base) comme exemples de défis. Mais vous pouvez le faire pour pratiquement n'importe quelle entité pour laquelle vous pouvez penser à un moyen de les suivre via le module Règles.

Utiliser des règles pour traiter les objectifs atteints

Une fois que toutes les tâches spécifiques à un objectif sont terminées par un utilisateur, l'objectif est automatiquement marqué comme terminé. Mais il y a plus: vous pouvez également créer des règles supplémentaires qui seront déclenchées (règles d'événement) lorsqu'un objectif est atteint par un utilisateur. Avec cela, la réponse à votre question est extrêmement simple: effectuez une action de règles pour " ... changer l'utilisateur à un rôle différent " ... c'est exactement ce que votre question concerne, non?

Plus du même

Au lieu de la description (ennuyeuse) de l'objectif ci-dessus, vous auriez pu utiliser à la place une description d'objectif comme (par exemple) " Utilisateur participant ". Lequel BTW pourrait être une belle description du rôle à attribuer également.

Si vous définissez ensuite (par exemple) 3 autres objectifs (similaires), avec chacun un ensemble approprié de tâches à accomplir, vous pouvez utiliser la même technique pour les objectifs (et / ou rôles) étiquetés quelque chose comme ça (s'ils sonnent familier à quelque chose sur Drupal.SE, c'est purement un accident):

  • Utilisateur fidèle.
  • Utilisateur établi.
  • Utilisateur de confiance.
  • Modérateur.

Plus d'informations

Reportez-vous à ma réponse à " Comment mettre en œuvre la gamification dans un site Drupal et attribuer des incitations? " Pour plus de détails sur le module Objectifs .

Remarque: L'utilisation de Goals ne nécessite que des tâches d'administration typiques (configuration), mais elle est livrée avec divers crochets également pour le développement de modules personnalisés (si vous le souhaitez).

Pierre.Vriens
la source