<?php declare(strict_types=1);
namespace CoeEmailSendCopy\Core\Content\MailTemplate\Subscriber;
use Shopware\Core\Content\MailTemplate\Service\Event\MailBeforeSentEvent;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Shopware\Core\System\SystemConfig\SystemConfigService;
class MailSendSubscriber implements EventSubscriberInterface
{
/**
* @var EntityRepositoryInterface
*/
private $mailTemplateRepository;
/**
* @var SystemConfigService
*/
private $systemConfigService;
/**
* MailSendSubscriber constructor.
* @param EntityRepositoryInterface $mailTemplaterepository
* @param SystemConfigService $systemConfigService
*/
public function __construct(
EntityRepositoryInterface $mailTemplaterepository,
SystemConfigService $systemConfigService
) {
$this->mailTemplateRepository = $mailTemplaterepository;
$this->systemConfigService = $systemConfigService;
}
/**
* @return array
* @author Jeffry Block <jeffry.block@codeenterprise.de>
*/
public static function getSubscribedEvents(): array
{
return [
MailBeforeSentEvent::class => 'beforeMailSent'
];
}
/**
* Check if CC or BCC has been provided in $data and add them respectively
* @param MailBeforeSentEvent $event
* @author Jeffry Block <jeffry.block@codeenterprise.de>
*/
public function beforeMailSent(MailBeforeSentEvent $event)
{
$data = $event->getData();
if(isset($data["bcc"]) && is_array($data["bcc"])){
foreach($data["bcc"] as $recipient => $name){
$event->getMessage()->addBcc($recipient,$name);
}
}
if(isset($data["cc"]) && is_array($data["cc"])){
foreach($data["cc"] as $recipient => $name){
$event->getMessage()->addCc($recipient,$name);
}
}
}
}