![]() 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/SmsBundle/EventListener/ |
<?php namespace Mautic\SmsBundle\EventListener; use Mautic\CampaignBundle\CampaignEvents; use Mautic\CampaignBundle\Event\CampaignBuilderEvent; use Mautic\CampaignBundle\Event\DecisionEvent; use Mautic\CampaignBundle\Executioner\RealTimeExecutioner; use Mautic\SmsBundle\Event\ReplyEvent; use Mautic\SmsBundle\Form\Type\CampaignReplyType; use Mautic\SmsBundle\Helper\ReplyHelper; use Mautic\SmsBundle\Sms\TransportChain; use Mautic\SmsBundle\SmsEvents; use Symfony\Component\EventDispatcher\EventSubscriberInterface; class CampaignReplySubscriber implements EventSubscriberInterface { public const TYPE = 'sms.reply'; public function __construct( private TransportChain $transportChain, private RealTimeExecutioner $realTimeExecutioner ) { } public static function getSubscribedEvents(): array { return [ CampaignEvents::CAMPAIGN_ON_BUILD => ['onCampaignBuild', 0], SmsEvents::ON_CAMPAIGN_REPLY => ['onCampaignReply', 0], SmsEvents::ON_REPLY => ['onReply', 0], ]; } public function onCampaignBuild(CampaignBuilderEvent $event): void { if (0 === count($this->transportChain->getEnabledTransports())) { return; } $event->addDecision( self::TYPE, [ 'label' => 'mautic.campaign.sms.reply', 'description' => 'mautic.campaign.sms.reply.tooltip', 'eventName' => SmsEvents::ON_CAMPAIGN_REPLY, 'formType' => CampaignReplyType::class, ] ); } public function onCampaignReply(DecisionEvent $decisionEvent): void { /** @var ReplyEvent $replyEvent */ $replyEvent = $decisionEvent->getPassthrough(); $pattern = $decisionEvent->getLog()->getEvent()->getProperties()['pattern']; if (empty($pattern)) { // Assume any reply $decisionEvent->setAsApplicable(); return; } if (!ReplyHelper::matches($pattern, $replyEvent->getMessage())) { // It does not match so ignore return; } $decisionEvent->setChannel('sms'); $decisionEvent->setAsApplicable(); } /** * @throws \Mautic\CampaignBundle\Executioner\Dispatcher\Exception\LogNotProcessedException * @throws \Mautic\CampaignBundle\Executioner\Dispatcher\Exception\LogPassedAndFailedException * @throws \Mautic\CampaignBundle\Executioner\Exception\CannotProcessEventException * @throws \Mautic\CampaignBundle\Executioner\Scheduler\Exception\NotSchedulableException */ public function onReply(ReplyEvent $event): void { $this->realTimeExecutioner->execute(self::TYPE, $event, 'sms'); } }