src/EventSubscriber/EasyAdminSubscriber.php line 51

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\ClassementPpf;
  4. use App\Entity\User;
  5. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityDeletedEvent;
  6. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityPersistedEvent;
  7. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
  8. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  9. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  10. use Symfony\Component\Cache\Adapter\FilesystemAdapter;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  13. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  14. use Symfony\Component\Translation\TranslatableMessage;
  15. class EasyAdminSubscriber implements EventSubscriberInterface
  16. {
  17.     private $passwordHasher;
  18.     public function __construct(UserPasswordHasherInterface $passwordHasherSessionInterface $session)
  19.     {
  20.         $this->passwordHasher $passwordHasher;
  21.         $this->session $session;
  22.     }
  23.     public static function getSubscribedEvents()
  24.     {
  25.         return [
  26.             BeforeEntityPersistedEvent::class => [['setUser'], ['setPoints']],
  27.             BeforeEntityUpdatedEvent::class => [['updatePoints']],
  28.             AfterEntityPersistedEvent::class => ['flashMessageAfterPersist'],
  29.             AfterEntityUpdatedEvent::class => ['flashMessageAfterUpdate'],
  30.             AfterEntityDeletedEvent::class => ['flashMessageAfterDelete'],
  31.         ];
  32.     }
  33.     public function setUser(BeforeEntityPersistedEvent $event)
  34.     {
  35.         $entity $event->getEntityInstance();
  36.         if (!($entity instanceof User)) {
  37.             return;
  38.         }
  39.         $passwordEncoded $this->passwordHasher->hashPassword($entity$entity->getPassword());
  40.         $entity->setPassword($passwordEncoded);
  41.     }
  42.     public function setPoints(BeforeEntityPersistedEvent $event)
  43.     {
  44.         $entity $event->getEntityInstance();
  45.         $this->processPoints($entity);
  46.     }
  47.     public function updatePoints(BeforeEntityUpdatedEvent $event)
  48.     {
  49.         $entity $event->getEntityInstance();
  50.         $this->processPoints($entity);
  51.     }
  52.     public function flashMessageAfterPersist(AfterEntityPersistedEvent $event): void
  53.     {
  54.         $this->session->getFlashBag()->add('success', new TranslatableMessage('content_admin.flash_message.create', [
  55.             '%name%' => (string)$event->getEntityInstance(),
  56.         ], 'admin'));
  57.     }
  58.     public function flashMessageAfterUpdate(AfterEntityUpdatedEvent $event): void
  59.     {
  60.         $this->session->getFlashBag()->add('success', new TranslatableMessage('content_admin.flash_message.update', [
  61.             '%name%' => (string)$event->getEntityInstance(),
  62.         ], 'admin'));
  63.     }
  64.     public function flashMessageAfterDelete(AfterEntityDeletedEvent $event): void
  65.     {
  66.         $this->session->getFlashBag()->add('success', new TranslatableMessage('content_admin.flash_message.delete', [
  67.             '%name%' => (string)$event->getEntityInstance(),
  68.         ], 'admin'));
  69.     }
  70.     private function processPoints($entity)
  71.     {
  72.         if (!($entity instanceof ClassementPpf)) {
  73.             return;
  74.         }
  75.         $entity->setPoints($entity->getPositionClassement()->getPoints());
  76.         $cachePool = new FilesystemAdapter(''1800"cache");
  77.         if ($cachePool->hasItem('classement_homme')) {
  78.             $cachePool->delete('classement_homme');
  79.         }
  80.         if ($cachePool->hasItem('classement_femme')) {
  81.             $cachePool->delete('classement_femme');
  82.         }
  83.     }
  84. }