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