vendor/bundles/FOS/UserBundle/Mailer/Mailer.php
changeset 3 e54dfe4d0b2b
equal deleted inserted replaced
2:806e57d67020 3:e54dfe4d0b2b
       
     1 <?php
       
     2 
       
     3 /*
       
     4  * This file is part of the FOSUserBundle package.
       
     5  *
       
     6  * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
       
     7  *
       
     8  * For the full copyright and license information, please view the LICENSE
       
     9  * file that was distributed with this source code.
       
    10  */
       
    11 
       
    12 namespace FOS\UserBundle\Mailer;
       
    13 
       
    14 use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
       
    15 use Symfony\Component\Routing\RouterInterface;
       
    16 use FOS\UserBundle\Model\UserInterface;
       
    17 use FOS\UserBundle\Mailer\MailerInterface;
       
    18 
       
    19 /**
       
    20  * @author Thibault Duplessis <thibault.duplessis@gmail.com>
       
    21  */
       
    22 class Mailer implements MailerInterface
       
    23 {
       
    24     protected $mailer;
       
    25     protected $router;
       
    26     protected $templating;
       
    27     protected $parameters;
       
    28 
       
    29     public function __construct($mailer, RouterInterface $router, EngineInterface $templating, array $parameters)
       
    30     {
       
    31         $this->mailer = $mailer;
       
    32         $this->router = $router;
       
    33         $this->templating = $templating;
       
    34         $this->parameters = $parameters;
       
    35     }
       
    36 
       
    37     public function sendConfirmationEmailMessage(UserInterface $user)
       
    38     {
       
    39         $template = $this->parameters['confirmation.template'];
       
    40         $url = $this->router->generate('fos_user_registration_confirm', array('token' => $user->getConfirmationToken()), true);
       
    41         $rendered = $this->templating->render($template, array(
       
    42             'user' => $user,
       
    43             'confirmationUrl' =>  $url
       
    44         ));
       
    45         $this->sendEmailMessage($rendered, $this->parameters['from_email']['confirmation'], $user->getEmail());
       
    46     }
       
    47 
       
    48     public function sendResettingEmailMessage(UserInterface $user)
       
    49     {
       
    50         $template = $this->parameters['resetting.template'];
       
    51         $url = $this->router->generate('fos_user_resetting_reset', array('token' => $user->getConfirmationToken()), true);
       
    52         $rendered = $this->templating->render($template, array(
       
    53             'user' => $user,
       
    54             'confirmationUrl' => $url
       
    55         ));
       
    56         $this->sendEmailMessage($rendered, $this->parameters['from_email']['resetting'], $user->getEmail());
       
    57     }
       
    58 
       
    59     protected function sendEmailMessage($renderedTemplate, $fromEmail, $toEmail)
       
    60     {
       
    61         // Render the email, use the first line as the subject, and the rest as the body
       
    62         $renderedLines = explode("\n", trim($renderedTemplate));
       
    63         $subject = $renderedLines[0];
       
    64         $body = implode("\n", array_slice($renderedLines, 1));
       
    65 
       
    66         $message = \Swift_Message::newInstance()
       
    67             ->setSubject($subject)
       
    68             ->setFrom($fromEmail)
       
    69             ->setTo($toEmail)
       
    70             ->setBody($body);
       
    71 
       
    72         $this->mailer->send($message);
       
    73     }
       
    74 }