![]() 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\ChannelBundle\ChannelEvents; use Mautic\ChannelBundle\Entity\MessageQueue; use Mautic\ChannelBundle\Event\MessageQueueBatchProcessEvent; use Mautic\SmsBundle\Model\SmsModel; use Symfony\Component\EventDispatcher\EventSubscriberInterface; class MessageQueueSubscriber implements EventSubscriberInterface { public function __construct( private SmsModel $model ) { } public static function getSubscribedEvents(): array { return [ ChannelEvents::PROCESS_MESSAGE_QUEUE_BATCH => ['onProcessMessageQueueBatch', 0], ]; } /** * Sends campaign emails. */ public function onProcessMessageQueueBatch(MessageQueueBatchProcessEvent $event): void { if (!$event->checkContext('sms')) { return; } $messages = $event->getMessages(); $id = $event->getChannelId(); $sms = $this->model->getEntity($id); $sendTo = []; $messagesByContact = []; /** @var MessageQueue $message */ foreach ($messages as $message) { if ($sms && $message->getLead() && $sms->isPublished()) { $contact = $message->getLead(); $mobile = $contact->getMobile(); $phone = $contact->getPhone(); if (empty($mobile) && empty($phone)) { $message->setProcessed(); $message->setSuccess(); } $sendTo[$contact->getId()] = $contact; $messagesByContact[$contact->getId()] = $message; } else { $message->setFailed(); } } if (count($sendTo)) { $options['resend_message_queue'] = $messagesByContact; $results = $this->model->sendSms($sms, $sendTo, $options); foreach ($messagesByContact as $contactId => $message) { if (!$message->isProcessed()) { $message->setProcessed(); $message->setMetadata($results[$contactId]); if ($results[$contactId]['sent']) { $message->setSuccess(); } } } } $event->stopPropagation(); } }