123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?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 FOS\UserBundle\Mailer\MailerInterface;
- use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
-
- /**
- * @author Christophe Coevoet <stof@notk.org>
- */
- class TwigSwiftMailer implements MailerInterface
- {
- protected $mailer;
- protected $router;
- protected $twig;
- protected $parameters;
-
- 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;
- }
-
- public function sendConfirmationEmailMessage(UserInterface $user)
- {
- $template = $this->parameters['template']['confirmation'];
- $url = $this->router->generate('fos_user_registration_confirm', array('token' => $user->getConfirmationToken()), true);
- $context = array(
- 'user' => $user,
- 'confirmationUrl' => $url
- );
-
- $this->sendMessage($template, $context, $this->parameters['from_email']['confirmation'], $user->getEmail());
- }
-
- public function sendResettingEmailMessage(UserInterface $user)
- {
- $template = $this->parameters['template']['resetting'];
- $url = $this->router->generate('fos_user_resetting_reset', array('token' => $user->getConfirmationToken()), true);
- $context = array(
- 'user' => $user,
- 'confirmationUrl' => $url
- );
- $this->sendMessage($template, $context, $this->parameters['from_email']['resetting'], $user->getEmail());
- }
-
- /**
- * @param string $templateName
- * @param array $context
- * @param string $fromEmail
- * @param string $toEmail
- */
- protected function sendMessage($templateName, $context, $fromEmail, $toEmail)
- {
- $template = $this->twig->loadTemplate($templateName);
- $subject = $template->renderBlock('subject', $context);
- $textBody = $template->renderBlock('body_text', $context);
- $htmlBody = $template->renderBlock('body_html', $context);
-
- $message = \Swift_Message::newInstance()
- ->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);
- }
- }
|