vectorxhd/trophy-bundle

A simple trophy bundle for Symfony

V1.0.0 2018-07-17 22:59 UTC

README

Ce bundle est une "amélioration" du tutoriel de grafikart

Installation

$ composer require vectorxhd/trophy-bundle

Configuration

<?php
// app/AppKernel.php
public function registerBundles()
{
    $bundles = [
        // ...
        new VectorXHD\TrophyBundle\VectorXHDTrophyBundle(),
    ];
}
# app/config/config.yml
vectorxhd_trophy:  
    user_class: AppBundle\Entity\User

Il faut aussi implémenter UserTrophyInterface sur votre entité user_class

Mettre a jour la base de donnée

$ php bin/console doctrine:schema:update --force

Ajouter un badge

Voici l'exemple d'un badge utiliser pour les commentaire

$badge = new Badge();  
$badge->setName("Premier badge");  
$badge->setActionName('comment');  
$badge->setActionCount(1);

Exemple d'utilisation

// Recuperer le manager
/** @var TrophyManager $trophyManager */  
$trophyManager = $this->get('vectorxhd_trophy.manager.trophy');

// Debloquage d'un trophée
$trophyManager->checkAndUnlock($user, 'comment', $commentsUserCount);

La méthode checkAndUnlock a besoin de

  • L'instance de l'utilisateur ($this->getUser();)
  • Le nom de l'action
  • Le nombre de fois que l'action c'est produite

Dans cette exemple $commentsUserCount correspond qu nombre de commentaire poser par l'utilisateur.

Événement

Il y a deux événement dispatch

  • TrophyUnlockedEvent::PRE_CREATE
  • TrophyUnlockedEvent::POST_CREATE

Cette événement dispose de plusieurs getter

  • getBadgeUnlock
  • getBadge
  • getUser

Todo

  • Ajouter des test
  • Ajouter le bundle sur packagist
  • Tester sur plusieurs version de symfony