parent
16f5645a96
commit
3b7125afd9
@ -1,35 +0,0 @@ |
|||||||
<?php |
|
||||||
|
|
||||||
declare(strict_types=1); |
|
||||||
|
|
||||||
/* For licensing terms, see /license.txt */ |
|
||||||
|
|
||||||
namespace Chamilo\CoreBundle\Entity\Listener; |
|
||||||
|
|
||||||
use Chamilo\CoreBundle\Entity\Message; |
|
||||||
use Doctrine\ORM\Event\PostPersistEventArgs; |
|
||||||
use Symfony\Component\Messenger\MessageBusInterface; |
|
||||||
|
|
||||||
class MessageListener |
|
||||||
{ |
|
||||||
public function __construct( |
|
||||||
private MessageBusInterface $bus |
|
||||||
) {} |
|
||||||
|
|
||||||
public function postPersist(Message $message, PostPersistEventArgs $args): void |
|
||||||
{ |
|
||||||
if ($message) { |
|
||||||
// Creates an outbox version, if message is sent in the inbox. |
|
||||||
if (Message::MESSAGE_TYPE_INBOX === $message->getMsgType()) { |
|
||||||
/*$messageSent = clone $message; |
|
||||||
$messageSent |
|
||||||
->setMsgType(Message::MESSAGE_TYPE_OUTBOX) |
|
||||||
->setRead(true) |
|
||||||
->setReceivers(null) |
|
||||||
; |
|
||||||
$args->getEntityManager()->persist($messageSent); |
|
||||||
$args->getEntityManager()->flush();*/ |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,62 +0,0 @@ |
|||||||
<?php |
|
||||||
|
|
||||||
declare(strict_types=1); |
|
||||||
|
|
||||||
/* For licensing terms, see /license.txt */ |
|
||||||
|
|
||||||
namespace Chamilo\CoreBundle\MessageHandler; |
|
||||||
|
|
||||||
use Chamilo\CoreBundle\Entity\Message; |
|
||||||
use Chamilo\CoreBundle\Entity\MessageRelUser; |
|
||||||
use Symfony\Bridge\Twig\Mime\TemplatedEmail; |
|
||||||
use Symfony\Component\Mailer\Exception\TransportExceptionInterface; |
|
||||||
use Symfony\Component\Mailer\Mailer; |
|
||||||
use Symfony\Component\Messenger\Attribute\AsMessageHandler; |
|
||||||
use Symfony\Component\Mime\Address; |
|
||||||
|
|
||||||
#[AsMessageHandler] |
|
||||||
class MessageHandler |
|
||||||
{ |
|
||||||
public function __construct( |
|
||||||
private readonly Mailer $mailer |
|
||||||
) {} |
|
||||||
public function __invoke(Message $message): void |
|
||||||
{ |
|
||||||
if (Message::MESSAGE_TYPE_INBOX !== $message->getMsgType()) { |
|
||||||
// Only send messages to the inbox. |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
$email = (new TemplatedEmail()) |
|
||||||
->subject($message->getTitle()) |
|
||||||
->from(new Address($message->getSender()->getEmail(), $message->getSender()->getFirstname())) |
|
||||||
->htmlTemplate('@ChamiloCore/Mailer/Default/default.html.twig') |
|
||||||
->textTemplate('@ChamiloCore/Mailer/Default/default.text.twig') |
|
||||||
; |
|
||||||
foreach ($message->getReceivers() as $messageRelUser) { |
|
||||||
$receiver = $messageRelUser->getReceiver(); |
|
||||||
$address = new Address($receiver->getEmail(), $receiver->getFirstname()); |
|
||||||
|
|
||||||
if (MessageRelUser::TYPE_TO === $messageRelUser->getReceiverType()) { |
|
||||||
$email->addTo($address); |
|
||||||
} elseif (MessageRelUser::TYPE_CC === $messageRelUser->getReceiverType()) { |
|
||||||
$email->addBcc($address); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
$params = [ |
|
||||||
'content' => $message->getContent(), |
|
||||||
'automatic_email_text' => '', |
|
||||||
'mail_header_style' => '', |
|
||||||
'mail_content_style' => '', |
|
||||||
'theme' => '', |
|
||||||
]; |
|
||||||
$email->context($params); |
|
||||||
|
|
||||||
try { |
|
||||||
$this->mailer->send($email); |
|
||||||
} catch (TransportExceptionInterface $e) { |
|
||||||
error_log('MessageHandler exception: '.$e->getMessage()); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue