src/Lci/BoilerBoxBundle/Listeners/RegisterSuccessListener.php line 55

Open in your IDE?
  1. <?php
  2. namespace Lci\BoilerBoxBundle\Listeners;
  3. // Listener effectué sur une registration en succés d'un nouvel utilisateur
  4. use FOS\UserBundle\Event\FormEvent;
  5. use FOS\UserBundle\FOSUserEvents;
  6. use FOS\UserBundle\Util\TokenGeneratorInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  10. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  11. class RegisterSuccessListener implements EventSubscriberInterface
  12. {
  13.     private $mailer;
  14.     private $tokenGenerator;
  15.     private $router;
  16.     private $session;
  17.     private $logos_directory;
  18.     private $backgrounds_directory;
  19.     private $dossier_public_directory;
  20.     /**
  21.      * EmailConfirmationListener constructor.
  22.      *
  23.      * @param MailerInterface         $mailer
  24.      * @param TokenGeneratorInterface $tokenGenerator
  25.      * @param UrlGeneratorInterface   $router
  26.      * @param SessionInterface        $session
  27.      */
  28.     public function __construct($mailerTokenGeneratorInterface $tokenGeneratorUrlGeneratorInterface $routerSessionInterface $session$dossier_public_directory$logos_directory$backgrounds_directory)
  29.     {
  30.         $this->mailer                     $mailer;
  31.         $this->tokenGenerator             $tokenGenerator;
  32.         $this->router                     $router;
  33.         $this->session                     $session;
  34.         $this->logos_directory             $logos_directory;
  35.         $this->backgrounds_directory     $backgrounds_directory;
  36.         $this->dossier_public_directory $dossier_public_directory;
  37.     }
  38.     /**
  39.      * @return array
  40.      */
  41.     public static function getSubscribedEvents()
  42.     {
  43.         return array(
  44.             FOSUserEvents::REGISTRATION_SUCCESS => 'onRegistrationSuccess',
  45.         );
  46.     }
  47.     /**
  48.      * @param FormEvent $event
  49.      */
  50.     public function onRegistrationSuccess(FormEvent $event)
  51.     {
  52.         /** @var $user \FOS\UserBundle\Model\UserInterface */
  53.         $user $event->getForm()->getData();
  54.         // Sauvegarde du fichier logo
  55.         // UploadedFile
  56.         $logoFile $event->getForm()->get('logoFile')->getData();
  57.         if ($logoFile)
  58.         {
  59.             $originalFilename pathinfo($logoFile->getClientOriginalName(), PATHINFO_FILENAME);
  60.             // this is needed to safely include the file name as part of the URL
  61.             $newFilename uniqid().'_'.$originalFilename.'.'.$logoFile->guessExtension();
  62.             try {
  63.                 $logoFile->move(
  64.                     $this->dossier_public_directory $this->logos_directory,
  65.                     $newFilename
  66.                 );
  67.             } catch (FileException $e) {
  68.                 $request->getSession()->getFlashBag()->add('info'"Le fichier n'a pas pu être importé. Veuillez contacter l'administrateur");
  69.             }
  70.             $user->setlogoFilename($newFilename);
  71.         }
  72.         // Sauvegarde du fichier smallLogo
  73.         // UploadedFile
  74.         $smallLogoFile $event->getForm()->get('smallLogoFile')->getData();
  75.         if ($smallLogoFile)
  76.         {
  77.             $originalSmallFilename pathinfo($smallLogoFile->getClientOriginalName(), PATHINFO_FILENAME);
  78.             // this is needed to safely include the file name as part of the URL
  79.             $newSmallFilename uniqid().'_'.$originalSmallFilename.'.'.$smallLogoFile->guessExtension();
  80.             try {
  81.                 $smallLogoFile->move(
  82.                     $this->dossier_public_directory $this->logos_directory,
  83.                     $newSmallFilename
  84.                 );
  85.             } catch (FileException $e) {
  86.                 $request->getSession()->getFlashBag()->add('info'"Le fichier (petit logo) n'a pas pu être importé. Veuillez contacter l'administrateur");
  87.             }
  88.             $user->setSmallLogoFilename($newSmallFilename);
  89.         }
  90.         // Sauvegarde du fichier backgroundLogo
  91.         // UploadedFile
  92.         $backgroundFile $event->getForm()->get('backgroundFile')->getData();
  93.         if ($backgroundFile)
  94.         {
  95.             $originalBackgroundFilename pathinfo($backgroundFile->getClientOriginalName(), PATHINFO_FILENAME);
  96.             $newBackgroundFilename uniqid().'_'.$originalBackgroundFilename.'.'.$backgroundFile->guessExtension();
  97.             try {
  98.                 $backgroundFile->move(
  99.                     $this->dossier_public_directory $this->backgrounds_directory,
  100.                     $newBackgroundFilename
  101.                 );
  102.             } catch (FileException $e) {
  103.                 $request->getSession()->getFlashBag()->add('info'"Le fichier (background) n'a pas pu être importer. Veuillez contacter l'administrateur");
  104.             }
  105.             $user->setBackgroundFilename($newBackgroundFilename);
  106.         }
  107.         $user->setEnabled(false);
  108.         if (null === $user->getConfirmationToken()) {
  109.             $user->setConfirmationToken($this->tokenGenerator->generateToken());
  110.         }
  111.         //$this->mailer->sendConfirmationEmailMessage($user);
  112.         $this->mailer->sendMailRegister($user);
  113.         $this->session->set('fos_user_send_confirmation_email/email'$user->getEmail());
  114.         $url $this->router->generate('fos_user_registration_check_email');
  115.         //
  116.         //**
  117.         $event->setResponse(new RedirectResponse($url));
  118.         // Stop the later events propagting
  119.         $event->stopPropagation();
  120.     }
  121. }