src/Aqarmap/Bundle/UserBundle/EventListener/ProfileEditedListener.php line 22

Open in your IDE?
  1. <?php
  2. namespace Aqarmap\Bundle\UserBundle\EventListener;
  3. use Aqarmap\Bundle\UserBundle\Entity\User;
  4. use FOS\UserBundle\Event\FilterUserResponseEvent;
  5. use FOS\UserBundle\FOSUserEvents;
  6. use FOS\UserBundle\Model\UserManagerInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpFoundation\Cookie;
  9. use Symfony\Component\HttpFoundation\Response;
  10. class ProfileEditedListener implements EventSubscriberInterface
  11. {
  12.     private UserManagerInterface $userManager;
  13.     public function __construct(UserManagerInterface $userManager)
  14.     {
  15.         $this->userManager $userManager;
  16.     }
  17.     public function onProfileEdited(FilterUserResponseEvent $event): void
  18.     {
  19.         $formFiles $event->getRequest()->files->get('fos_user_profile_form');
  20.         /** @var User $user */
  21.         $user $event->getUser();
  22.         $response $event->getResponse();
  23.         if ((isset($formFiles['logo']['file']) && $this->handleLogo($formFiles['logo']['file'], $user$response))
  24.             || (isset($formFiles['personalPhoto']['file']) && $this->handlePersonalPhoto($formFiles['personalPhoto']['file'], $user$response))) {
  25.             $this->userManager->updateUser($user);
  26.         }
  27.     }
  28.     /**
  29.      * @return Response|null
  30.      */
  31.     private function handleLogo($logoUser $userResponse $response)
  32.     {
  33.         if ($logo) {
  34.             $user->setIsValidLogo(false);
  35.             $time time() + (86400 30);
  36.             $response->headers->setCookie(new Cookie('hide_logo_request'true$time));
  37.             $response->sendHeaders();
  38.             return $response;
  39.         }
  40.         return null;
  41.     }
  42.     /**
  43.      * @return Response|null
  44.      */
  45.     private function handlePersonalPhoto($personalPhotoUser $userResponse $response)
  46.     {
  47.         if ($personalPhoto) {
  48.             $user->setIsValidPersonalPhoto(false);
  49.             $time time() + (86400 30);
  50.             $response->headers->setCookie(new Cookie('hide_profile_picture_request'true$time));
  51.             $response->sendHeaders();
  52.             return $response;
  53.         }
  54.         return null;
  55.     }
  56.     public static function getSubscribedEvents()
  57.     {
  58.         return [
  59.             FOSUserEvents::PROFILE_EDIT_COMPLETED => 'onProfileEdited',
  60.         ];
  61.     }
  62. }