/Mailer/TwigSwiftMailer.php
PHP | 117 lines | 59 code | 20 blank | 38 comment | 3 complexity | 85078cea88019a59a0044b5a66b39368 MD5 | raw file
- <?php
- /*
- * This file is part of the FOSUserBundle package.
- *
- * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace FOS\UserBundle\Mailer;
- use FOS\UserBundle\Model\UserInterface;
- use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
- /**
- * @author Christophe Coevoet <stof@notk.org>
- */
- class TwigSwiftMailer implements MailerInterface
- {
- /**
- * @var \Swift_Mailer
- */
- protected $mailer;
- /**
- * @var UrlGeneratorInterface
- */
- protected $router;
- /**
- * @var \Twig_Environment
- */
- protected $twig;
- /**
- * @var array
- */
- protected $parameters;
- /**
- * TwigSwiftMailer constructor.
- */
- public function __construct(\Swift_Mailer $mailer, UrlGeneratorInterface $router, \Twig_Environment $twig, array $parameters)
- {
- $this->mailer = $mailer;
- $this->router = $router;
- $this->twig = $twig;
- $this->parameters = $parameters;
- }
- /**
- * {@inheritdoc}
- */
- public function sendConfirmationEmailMessage(UserInterface $user)
- {
- $template = $this->parameters['template']['confirmation'];
- $url = $this->router->generate('fos_user_registration_confirm', ['token' => $user->getConfirmationToken()], UrlGeneratorInterface::ABSOLUTE_URL);
- $context = [
- 'user' => $user,
- 'confirmationUrl' => $url,
- ];
- $this->sendMessage($template, $context, $this->parameters['from_email']['confirmation'], (string) $user->getEmail());
- }
- /**
- * {@inheritdoc}
- */
- public function sendResettingEmailMessage(UserInterface $user)
- {
- $template = $this->parameters['template']['resetting'];
- $url = $this->router->generate('fos_user_resetting_reset', ['token' => $user->getConfirmationToken()], UrlGeneratorInterface::ABSOLUTE_URL);
- $context = [
- 'user' => $user,
- 'confirmationUrl' => $url,
- ];
- $this->sendMessage($template, $context, $this->parameters['from_email']['resetting'], (string) $user->getEmail());
- }
- /**
- * @param string $templateName
- * @param array $context
- * @param array $fromEmail
- * @param string $toEmail
- */
- protected function sendMessage($templateName, $context, $fromEmail, $toEmail)
- {
- $template = $this->twig->load($templateName);
- $subject = $template->renderBlock('subject', $context);
- $textBody = $template->renderBlock('body_text', $context);
- $htmlBody = '';
- if ($template->hasBlock('body_html', $context)) {
- $htmlBody = $template->renderBlock('body_html', $context);
- }
- $message = (new \Swift_Message())
- ->setSubject($subject)
- ->setFrom($fromEmail)
- ->setTo($toEmail);
- if (!empty($htmlBody)) {
- $message->setBody($htmlBody, 'text/html')
- ->addPart($textBody, 'text/plain');
- } else {
- $message->setBody($textBody);
- }
- $this->mailer->send($message);
- }
- }