Aller au contenu

tilttek/badges-bundle

✅ publié

Les badges des membres d'une application Symfony, gagnés par leur activité, montrés à leur choix et délivrés comme Open Badges.

tilttek/badges-bundle intègre tilttek/badges à Symfony. Il construit les badges et leurs critères à partir de la configuration, vérifiée à la compilation du conteneur. Il garde les contributions de l'activité, les attributions, les profils des membres et leurs consentements dans quatre tables sur une connexion Doctrine DBAL. Ces tables sont ajoutées au schéma que génère l'ORM, pour que les migrations de l'application les créent. Il enregistre la projection qui attribue les badges, que tilttek/activity-bundle tient à jour à mesure que le journal s'écrit, fait rattraper et reconstruit. Il répartit un événement quand un badge est gagné ou retiré. Badges donne à l'application les attributions, la progression, les attributions manuelles, la vitrine, le titre, le partage et les consentements. Des fonctions Twig et deux gabarits affichent la vitrine et la progression. Trois commandes attribuent, retirent et énumèrent. Le badge d'un membre est délivré comme une attestation Open Badges 3.0 par phil/open-badges-bundle. Un module répond aux demandes d'export et d'effacement de phil/privacy-bundle pour les badges d'un membre.

Il s'adresse à une application Symfony qui reconnaît par des badges ce que font ses membres, laisse chaque membre décider de ce qui est public, et leur donne des attestations qu'ils peuvent emporter ailleurs.

Il exige DependencyInjection et Config de Symfony, Doctrine DBAL, le répartiteur d'événements PSR, tilttek/badges et phil/resource. tilttek/activity-bundle est ce qui alimente les critères ; sans lui, les badges ne sont attribués qu'à la main. L'ORM, la Console, Twig, les contrats de Translation, le composant Uid, phil/open-badges-bundle et phil/privacy-bundle sont facultatifs : l'écouteur du schéma, les commandes, les fonctions Twig, les attestations et le module de vie privée ne sont enregistrés que s'ils sont installés.

La conception suit celle des autres bundles du monodépôt : un AbstractBundle avec sa configuration, des services déclarés par BadgesServices, des stockages DBAL et des stockages en mémoire pour les tests, des tables ajoutées par un écouteur du schéma.

État

PartieÉtat
Configuration tilttek_badges : stockage, connexion, fuseau horaire, badges, projection, taille de la vitrine, domaine de traduction, Open Badges, sorte de membreImplémenté et testé
DbalProgressStore, DbalAwardStore, DbalProfileStore, DbalGrantStore, avec leurs quatre tablesImplémenté et testé
Les tables dans le schéma que génère l'ORM, pour les migrationsImplémenté et testé
La projection étiquetée pour tilttek/activity-bundle, et les événements BadgeAwarded et BadgeRevokedImplémenté et testé
Fonctions Twig tilttek_badges_showcase, tilttek_badges_overview, tilttek_badges_domain, gabarits showcase et overviewImplémenté et testé
Commandes tilttek:badges:award, tilttek:badges:revoke, tilttek:badges:listImplémenté et testé
BadgeCredentials : le badge d'un membre délivré comme une attestation Open Badges 3.0 de phil/open-badges, sécurisée selon la configuration de phil/open-badges-bundleImplémenté et testé
Export et effacement d'un membre pour phil/privacy-bundleImplémenté et testé

Documentation

DocumentCe qu'il couvre
InstallationLes prérequis, l'activation du bundle, la migration.
ConfigurationChaque clé de tilttek_badges, avec sa valeur par défaut, et les critères des badges.
Les badges dans la base de donnéesLes quatre tables, l'insertion idempotente selon la plateforme, les dates.
Attribuer à partir de l'activitéLa projection avec tilttek/activity-bundle, les événements, les reconstructions, les mesures.
Afficher les badgesBadges dans un contrôleur, les fonctions et les gabarits Twig, la vitrine, le titre, les consentements.
Commandestilttek:badges:award, tilttek:badges:revoke et tilttek:badges:list.
Open BadgesDélivrer le badge d'un membre comme une attestation par phil/open-badges-bundle.
Vie privéeL'export et l'effacement des badges d'un membre.
Points d'extensionLes services, les alias, les étiquettes et les événements qu'utilise l'application.
ExceptionsCe que lève le bundle.
TestsLes tests du bundle, et comment tester une application qui attribue des badges.
RéférenceChaque classe du bundle, avec son rôle.

Démarrage rapide

composer require tilttek/activity-bundle tilttek/badges-bundle
# config/packages/tilttek_badges.yaml
tilttek_badges:
    timezone: America/Toronto
    badges:
        commenter.bronze:
            name: badges.commenter.bronze.name
            tier: { series: commenter, rank: 1 }
            criterion: { count: { verbs: ['news.commented'], times: 10 } }
        regular:
            name: badges.regular.name
            criterion: { streak: { verbs: ['site.visited'], days: 7 } }
        organiser: { name: badges.organiser.name, criterion: { manual: true } }
{{ include('@TilttekBadges/showcase.html.twig', {showcase: tilttek_badges_showcase('member:' ~ member.id)}) }}

Prérequis

PHP 8.5 ou plus récent, Symfony 8.2, Doctrine DBAL 4.

Contribuer

Les contributions sont les bienvenues sur le monodépôt de PHIL : lisez le guide de contribution et le code de conduite. Signalez une vulnérabilité en privé, comme l'explique la politique de sécurité, jamais dans un ticket public.

Licence

MIT, © Philippe Gamache, doing business as Le Gnome Archiviste; a Tilttek project. Voir LICENSE.