![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/EmailBundle/EventListener/ |
<?php namespace Mautic\EmailBundle\EventListener; use Doctrine\ORM\EntityManager; use Mautic\EmailBundle\EmailEvents; use Mautic\EmailBundle\Event\EmailOpenEvent; use Mautic\EmailBundle\Event\EmailSendEvent; use Mautic\EmailBundle\Form\Type\EmailOpenType; use Mautic\EmailBundle\Form\Type\EmailSendType; use Mautic\EmailBundle\Form\Type\EmailToUserType; use Mautic\LeadBundle\Entity\Lead; use Mautic\PointBundle\Event\PointBuilderEvent; use Mautic\PointBundle\Event\TriggerBuilderEvent; use Mautic\PointBundle\Model\PointModel; use Mautic\PointBundle\PointEvents; use Symfony\Component\EventDispatcher\EventSubscriberInterface; class PointSubscriber implements EventSubscriberInterface { public function __construct( private PointModel $pointModel, private EntityManager $entityManager ) { } public static function getSubscribedEvents(): array { return [ PointEvents::POINT_ON_BUILD => ['onPointBuild', 0], PointEvents::TRIGGER_ON_BUILD => ['onTriggerBuild', 0], EmailEvents::EMAIL_ON_OPEN => ['onEmailOpen', 0], EmailEvents::EMAIL_ON_SEND => ['onEmailSend', 0], ]; } public function onPointBuild(PointBuilderEvent $event): void { $action = [ 'group' => 'mautic.email.actions', 'label' => 'mautic.email.point.action.open', 'callback' => [\Mautic\EmailBundle\Helper\PointEventHelper::class, 'validateEmail'], 'formType' => EmailOpenType::class, ]; $event->addAction('email.open', $action); $action = [ 'group' => 'mautic.email.actions', 'label' => 'mautic.email.point.action.send', 'callback' => [\Mautic\EmailBundle\Helper\PointEventHelper::class, 'validateEmail'], 'formType' => EmailOpenType::class, ]; $event->addAction('email.send', $action); } public function onTriggerBuild(TriggerBuilderEvent $event): void { $sendEvent = [ 'group' => 'mautic.email.point.trigger', 'label' => 'mautic.email.point.trigger.sendemail', 'callback' => [\Mautic\EmailBundle\Helper\PointEventHelper::class, 'sendEmail'], 'formType' => EmailSendType::class, 'formTypeOptions' => ['update_select' => 'pointtriggerevent_properties_email'], 'formTheme' => '@MauticEmail/FormTheme/EmailSendList/emailsend_list_row.html.twig', ]; $event->addEvent('email.send', $sendEvent); $sendToOwnerEvent = [ 'group' => 'mautic.email.point.trigger', 'label' => 'mautic.email.point.trigger.send_email_to_user', 'formType' => EmailToUserType::class, 'formTypeOptions' => ['update_select' => 'pointtriggerevent_properties_useremail_email'], 'formTheme' => '@MauticEmail/FormTheme/EmailSendList/email_to_user_row.html.twig', 'eventName' => EmailEvents::ON_SENT_EMAIL_TO_USER, ]; $event->addEvent('email.send_to_user', $sendToOwnerEvent); } /** * Trigger point actions for email open. */ public function onEmailOpen(EmailOpenEvent $event): void { $this->pointModel->triggerAction('email.open', $event->getEmail()); } /** * Trigger point actions for email send. */ public function onEmailSend(EmailSendEvent $event): void { $leadArray = $event->getLead(); if ($leadArray && is_array($leadArray) && !empty($leadArray['id'])) { $lead = $this->entityManager->getReference(Lead::class, $leadArray['id']); } else { return; } $this->pointModel->triggerAction('email.send', $event->getEmail(), null, $lead, true); } }