Aller au contenu

tilttek/collections-bundle

✅ publié

Des objets à collectionner pour Symfony : le catalogue, les exemplaires des membres, l'objet du jour, les paquets et les dés, dans Doctrine DBAL.

tilttek/collections-bundle intègre tilttek/collections à Symfony. Le catalogue — raretés, objets, ensembles, paquets — est configuré et vérifié à la compilation du conteneur, ou gardé dans la base de données et modifié une définition à la fois. Les exemplaires, les ensembles complétés, les paquets ouverts, les dés choisis et le calendrier de l'objet du jour vivent dans six tables d'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, et chaque exemplaire est écrit une seule fois, même quand deux processus le remettent. L'objet du jour est remis sur l'activité des membres par une projection que tient à jour tilttek/activity-bundle, à des dates fixes, à des dates que calcule phil/almanac et par un tirage pondéré par la rareté les jours libres. Un exemplaire remis et un ensemble complété — avec ses récompenses — deviennent des événements du répartiteur de l'application. Le bundle fournit l'inventaire par lequel échange tilttek/exchange et l'apparence des dés d'un membre pour tilttek/dice-bundle. Il offre des fonctions et des gabarits Twig pour l'album, l'objet du jour et les chances d'un paquet, des commandes qui génèrent le calendrier, remettent un exemplaire et affichent un album, et l'export et l'effacement d'un membre pour phil/privacy-bundle.

Il s'adresse à une application Symfony qui donne à ses membres quelque chose à collectionner. Ses dépendances sont tilttek/collections, Doctrine DBAL, phil/resource, le répartiteur d'événements PSR, ainsi que la configuration et l'injection de dépendances de Symfony. Toute autre intégration n'est enregistrée que si son paquet est installé.

La conception suit la bibliothèque : les stockages implémentent ses contrats sur DBAL, CollectionsServices câble les services à partir de la configuration, et des adaptateurs sous Infrastructure rejoignent les autres paquets — Almanac, Exchange, Dice, Event, Console, Twig, Privacy. Le bundle n'a aucun modèle propre.

État

PartieÉtat
TilttekCollectionsBundle, CollectionsServices : la configuration, vérifiée à la compilation du conteneur, et les servicesImplémenté et testé
CollectionsTables, CollectionsSchemaListener, Rows : les six tables dans le schéma généré, l'insertion idempotente selon la plateformeImplémenté et testé
DbalCopyStore, DbalCompletionStore, DbalOpeningStore, DbalChoiceStore, DbalDailyStore : les stockages de la bibliothèque sur DBALImplémenté et testé
DbalCatalog : le catalogue dans la base de données, modifié une définition à la foisImplémenté et testé
AlmanacDateRule : des objets du jour aux dates que calcule phil/almanacImplémenté et testé
CollectionsInventory : les exemplaires comme inventaire de tilttek/exchangeImplémenté et testé
CollectionDiceAppearance : le dé choisi comme apparence de tilttek/dice-bundleImplémenté et testé
DispatchingObserver, CopyGranted : les événementsImplémenté et testé
DailyCommand, GrantCommand, AlbumCommand : les commandesImplémenté et testé
CollectionsExtension et les gabarits album, daily, odds, en anglais et en françaisImplémenté et testé
CollectionsPrivacy : l'export et l'effacement d'un membreImplémenté et testé

Documentation

DocumentCe qu'il couvre
InstallationLes prérequis, l'enregistrement du bundle, la migration.
ConfigurationChaque clé, avec sa valeur par défaut.
La base de donnéesLes six tables, le catalogue dans la base de données, la concurrence.
L'objet du jourLe calendrier, ses dates, son tirage, la projection et la commande.
Points d'extensionLes échanges par tilttek/exchange, les dés pour tilttek/dice-bundle, les germes, le catalogue.
ÉvénementsCopyGranted et SetCompleted.
GabaritsLes fonctions Twig et les trois gabarits.
Commandestilttek:collections:daily, tilttek:collections:grant, tilttek:collections:album.
Vie privéeLe module de phil/privacy-bundle.
ExceptionsCe que lève le bundle.
TestsLes tests du bundle, et comment tester une application qui l'utilise.
RéférenceChaque classe du bundle, avec son rôle.

Démarrage rapide

composer require tilttek/collections-bundle tilttek/activity-bundle
# config/packages/tilttek_collections.yaml
tilttek_collections:
    timezone: America/Toronto
    rarities: { common: 70, rare: 25, legendary: 5 }
    items:
        deckhand: { name: { en: Deckhand, fr: Matelot }, rarity: common, sets: [crew] }
        captain: { name: Captain, rarity: legendary, sets: [crew] }
    sets:
        crew: { name: The crew, rewards: [{ kind: points, code: xp, amount: 50 }] }
    daily:
        enabled: true
        verbs: ['page.viewed']
{{ include('@TilttekCollections/album.html.twig', {album: tilttek_collections_album('member:' ~ app.user.id), locale: app.request.locale}) }}

Prérequis

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

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.