vendor/friendsofsymfony/user-bundle/EventListener/FlashListener.php line 75

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the FOSUserBundle package.
  4.  *
  5.  * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace FOS\UserBundle\EventListener;
  11. use FOS\UserBundle\FOSUserEvents;
  12. use Symfony\Component\EventDispatcher\Event;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. use Symfony\Component\HttpFoundation\Session\Session;
  15. use Symfony\Component\Translation\TranslatorInterface;
  16. class FlashListener implements EventSubscriberInterface {
  17.     /**
  18.      * @var string[]
  19.      */
  20.     private static $successMessages = array(
  21.         FOSUserEvents::CHANGE_PASSWORD_COMPLETED => 'change_password.flash.success',
  22.         FOSUserEvents::GROUP_CREATE_COMPLETED => 'group.flash.created',
  23.         FOSUserEvents::GROUP_DELETE_COMPLETED => 'group.flash.deleted',
  24.         FOSUserEvents::GROUP_EDIT_COMPLETED => 'group.flash.updated',
  25.         FOSUserEvents::PROFILE_EDIT_COMPLETED => 'profile.flash.updated',
  26.         FOSUserEvents::REGISTRATION_COMPLETED => 'registration.flash.user_created',
  27.         FOSUserEvents::RESETTING_RESET_COMPLETED => 'resetting.flash.success',
  28.     );
  29.     /**
  30.      * @var Session
  31.      */
  32.     private $session;
  33.     /**
  34.      * @var TranslatorInterface
  35.      */
  36.     private $translator;
  37.     /**
  38.      * FlashListener constructor.
  39.      *
  40.      * @param Session             $session
  41.      * @param TranslatorInterface $translator
  42.      */
  43.     public function __construct(Session $sessionTranslatorInterface $translator) {
  44.         $this->session $session;
  45.         $this->translator $translator;
  46.     }
  47.     /**
  48.      * {@inheritdoc}
  49.      */
  50.     public static function getSubscribedEvents() {
  51.         return array(
  52.             FOSUserEvents::CHANGE_PASSWORD_COMPLETED => 'addSuccessFlash',
  53.             FOSUserEvents::GROUP_CREATE_COMPLETED => 'addSuccessFlash',
  54.             FOSUserEvents::GROUP_DELETE_COMPLETED => 'addSuccessFlash',
  55.             FOSUserEvents::GROUP_EDIT_COMPLETED => 'addSuccessFlash',
  56.             FOSUserEvents::PROFILE_EDIT_COMPLETED => 'addSuccessFlash',
  57.             FOSUserEvents::REGISTRATION_COMPLETED => 'addSuccessFlash',
  58.             FOSUserEvents::RESETTING_RESET_COMPLETED => 'addSuccessFlash',
  59.         );
  60.     }
  61.     /**
  62.      * @param Event  $event
  63.      * @param string $eventName
  64.      */
  65.     public function addSuccessFlash(Event $event$eventName) {
  66.         if (!isset(self::$successMessages[$eventName])) {
  67.             throw new \InvalidArgumentException('This event does not correspond to a known flash message');
  68.         }
  69.         $this->session->getFlashBag()->add('success'$this->trans(self::$successMessages[$eventName]));
  70.     }
  71.     /**
  72.      * @param string$message
  73.      * @param array $params
  74.      *
  75.      * @return string
  76.      */
  77.     private function trans($message, array $params = array()) {
  78.         return $this->translator->trans($message$params'FOSUserBundle');
  79.     }
  80. }