src/EventListener/DataObject/UserEventListener.php line 48

Open in your IDE?
  1. <?php
  2. namespace App\EventListener\DataObject;
  3. use App\Helper as AppHelper;
  4. use Pimcore\Event\DataObjectEvents;
  5. use Pimcore\Event\Model\DataObjectEvent;
  6. use Pimcore\Model\DataObject;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  9. class UserEventListener implements EventSubscriberInterface
  10. {
  11.     public function __construct(UrlGeneratorInterface $router)
  12.     {
  13.         $this->router $router;
  14.     }
  15.     /**
  16.      * @inheritDoc
  17.      */
  18.     public static function getSubscribedEvents()
  19.     {
  20.         return [
  21.             DataObjectEvents::PRE_UPDATE => 'onPreUpdate',
  22.             DataObjectEvents::PRE_ADD => 'onPreAdd',
  23.             DataObjectEvents::POST_ADD => 'onPostAdd'
  24.         ];
  25.     }
  26.     public function onPreAdd(DataObjectEvent $event)
  27.     {
  28.         $user $event->getObject();
  29.         if (!$user instanceof DataObject\User) {
  30.             return;
  31.         }
  32.         $this->validate($user);
  33.     }
  34.     private function validate(\Pimcore\Model\DataObject\User $user)
  35.     {
  36.         AppHelper\DataObject::isExist($user'email');
  37.         AppHelper\DataObject::isExist($user'username');
  38.     }
  39.     public function onPreUpdate(DataObjectEvent $event)
  40.     {
  41.         $user $event->getObject();
  42.         if (!$user instanceof DataObject\User) {
  43.             return;
  44.         }
  45.         $this->validate($user);
  46.         if ($user->getIsPremium()) {
  47.             $user->setStatus('activated');
  48.             $user->setMembershipDate(null);
  49.             $user->setMembershipExpiryDate(null);
  50.         }
  51.     }
  52.     public function onPostAdd(DataObjectEvent $event)
  53.     {
  54.         $user $event->getObject();
  55.         if (!$user instanceof DataObject\User) {
  56.             return;
  57.         }
  58.         if ($user->getEmail()) {
  59.             self::send($user);
  60.         }
  61.     }
  62.     private static function send(\Pimcore\Model\DataObject\User $user)
  63.     {
  64.         $container \Pimcore::getContainer();
  65.         $mail = new \Pimcore\Mail();
  66.         $mail->addTo($user->getEmail());
  67.         $mail->subject('Welcome to ATUMobile! Please activate your account.');
  68.         $mail->html($container->get('twig')->render('Email/activate_user.html.twig', [
  69.             'user' => $user
  70.         ]));
  71.         try {
  72.             $mail->send();
  73.         } catch (\Exception $ex) {
  74.             AppHelper\Log::log($ex'signup_email');
  75.         }
  76.     }
  77. }