![]() 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/Model/ |
<?php namespace Mautic\EmailBundle\Model; use Mautic\CoreBundle\Helper\DateTimeHelper; use Mautic\EmailBundle\Entity\Stat; use Mautic\EmailBundle\MonitoredEmail\Search\ContactFinder; use Mautic\LeadBundle\Entity\DoNotContact as DNC; use Mautic\LeadBundle\Model\DoNotContact; class TransportCallback { public function __construct( private DoNotContact $dncModel, private ContactFinder $finder, private EmailStatModel $emailStatModel ) { } /** * @param string $hashId * @param string $comments * @param int $dncReason */ public function addFailureByHashId($hashId, $comments, $dncReason = DNC::BOUNCED): void { $result = $this->finder->findByHash($hashId); if ($contacts = $result->getContacts()) { $stat = $result->getStat(); $this->updateStatDetails($stat, $comments, $dncReason); $email = $stat->getEmail(); $channel = ($email) ? ['email' => $email->getId()] : 'email'; foreach ($contacts as $contact) { $this->dncModel->addDncForContact($contact->getId(), $channel, $dncReason, $comments); } } } /** * @param string $address * @param string $comments * @param int $dncReason * @param int|null $channelId */ public function addFailureByAddress($address, $comments, $dncReason = DNC::BOUNCED, $channelId = null): void { $result = $this->finder->findByAddress($address); if ($contacts = $result->getContacts()) { foreach ($contacts as $contact) { $channel = ($channelId) ? ['email' => $channelId] : 'email'; $this->dncModel->addDncForContact($contact->getId(), $channel, $dncReason, $comments); } } } /** * @param int $dncReason * @param int|null $channelId */ public function addFailureByContactId($id, $comments, $dncReason = DNC::BOUNCED, $channelId = null): void { $channel = ($channelId) ? ['email' => $channelId] : 'email'; $this->dncModel->addDncForContact($id, $channel, $dncReason, $comments); } private function updateStatDetails(Stat $stat, $comments, $dncReason): void { if (DNC::BOUNCED === $dncReason) { $stat->setIsFailed(true); } $openDetails = $stat->getOpenDetails(); if (!isset($openDetails['bounces'])) { $openDetails['bounces'] = []; } $dtHelper = new DateTimeHelper(); $openDetails['bounces'][] = [ 'datetime' => $dtHelper->toUtcString(), 'reason' => $comments, ]; $stat->setOpenDetails($openDetails); $this->emailStatModel->saveEntity($stat); } }