<?php
namespace App\EventListener\DataObject;
use App\Helper as AppHelper;
use Pimcore\Event\DataObjectEvents;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Model\DataObject;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class UserEventListener implements EventSubscriberInterface
{
public function __construct(UrlGeneratorInterface $router)
{
$this->router = $router;
}
/**
* @inheritDoc
*/
public static function getSubscribedEvents()
{
return [
DataObjectEvents::PRE_UPDATE => 'onPreUpdate',
DataObjectEvents::PRE_ADD => 'onPreAdd',
DataObjectEvents::POST_ADD => 'onPostAdd'
];
}
public function onPreAdd(DataObjectEvent $event)
{
$user = $event->getObject();
if (!$user instanceof DataObject\User) {
return;
}
$this->validate($user);
}
private function validate(\Pimcore\Model\DataObject\User $user)
{
AppHelper\DataObject::isExist($user, 'email');
AppHelper\DataObject::isExist($user, 'username');
}
public function onPreUpdate(DataObjectEvent $event)
{
$user = $event->getObject();
if (!$user instanceof DataObject\User) {
return;
}
$this->validate($user);
if ($user->getIsPremium()) {
$user->setStatus('activated');
$user->setMembershipDate(null);
$user->setMembershipExpiryDate(null);
}
}
public function onPostAdd(DataObjectEvent $event)
{
$user = $event->getObject();
if (!$user instanceof DataObject\User) {
return;
}
if ($user->getEmail()) {
self::send($user);
}
}
private static function send(\Pimcore\Model\DataObject\User $user)
{
$container = \Pimcore::getContainer();
$mail = new \Pimcore\Mail();
$mail->addTo($user->getEmail());
$mail->subject('Welcome to ATUMobile! Please activate your account.');
$mail->html($container->get('twig')->render('Email/activate_user.html.twig', [
'user' => $user
]));
try {
$mail->send();
} catch (\Exception $ex) {
AppHelper\Log::log($ex, 'signup_email');
}
}
}