Question

J'ai réfléchi à la façon de mettre en œuvre la fonctionnalité de badge similaire à SO sur un nouveau site Web. Quelle est la meilleure façon de stocker les critères pour les badges?

Deux idées:

  • Tout code
  • «Second System» - Créez une méta-architecture pour définir les badges et leurs critères. Stockez quelques informations dans la base de données et demandez à Code de le demander pour déterminer les badges et leurs critères.

Y a-t-il de meilleures façons?

Était-ce utile?

La solution

Règles.

Vous créez des événements dans le système et utilisez des règles dans un processeur d'événements.

Plus précisément, disons que vous avez un badge "fait 10 messages". Vous n'exécutez pas "Sélectionnez Count (*) dans les articles où l'utilisateur =: utilisateur" pour chaque publication. Vous avez plutôt une règle simple qui regarde chaque message, et "comptez-les", en stockant l'état des règles dans le profil utilisateur.

De cette façon, "fait 10 messages" est aussi bon marché que les messages "fabriqués 1 000 000".

Cela rend également le système beaucoup plus extensible.

Autres conseils

Je suis d'accord avec Will sur celui-ci.

Créez des "événements" sur les pages, donc chaque fois qu'un événement se produit IE. Un utilisateur supprime un message, il interroge le module d'événement avec l'événement, disons, event_user_delete_post, puis vous pouvez sélectionner cet événement et créer une requête en fonction. Vous pouvez alors décider si un badge est attribué ou non.

Cela gardera les deux logiques séparées et gardera une conception modulaire. Il devrait être très facile à mettre en œuvre de cette façon.

Le seul inconvénient est que si l'événement n'était pas "capturé", un utilisateur a peut-être bien obtenu un critère de badge mais il n'a pas encore été récompensé. Cependant, cela ne devrait jamais se produire. La seule situation à laquelle je peux penser est si la base de données est manipulée manuellement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top