diff -r 806e57d67020 -r e54dfe4d0b2b vendor/bundles/FOS/UserBundle/Mailer/Mailer.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/bundles/FOS/UserBundle/Mailer/Mailer.php Fri Sep 30 11:24:53 2011 +0200 @@ -0,0 +1,74 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\UserBundle\Mailer; + +use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface; +use Symfony\Component\Routing\RouterInterface; +use FOS\UserBundle\Model\UserInterface; +use FOS\UserBundle\Mailer\MailerInterface; + +/** + * @author Thibault Duplessis + */ +class Mailer implements MailerInterface +{ + protected $mailer; + protected $router; + protected $templating; + protected $parameters; + + public function __construct($mailer, RouterInterface $router, EngineInterface $templating, array $parameters) + { + $this->mailer = $mailer; + $this->router = $router; + $this->templating = $templating; + $this->parameters = $parameters; + } + + public function sendConfirmationEmailMessage(UserInterface $user) + { + $template = $this->parameters['confirmation.template']; + $url = $this->router->generate('fos_user_registration_confirm', array('token' => $user->getConfirmationToken()), true); + $rendered = $this->templating->render($template, array( + 'user' => $user, + 'confirmationUrl' => $url + )); + $this->sendEmailMessage($rendered, $this->parameters['from_email']['confirmation'], $user->getEmail()); + } + + public function sendResettingEmailMessage(UserInterface $user) + { + $template = $this->parameters['resetting.template']; + $url = $this->router->generate('fos_user_resetting_reset', array('token' => $user->getConfirmationToken()), true); + $rendered = $this->templating->render($template, array( + 'user' => $user, + 'confirmationUrl' => $url + )); + $this->sendEmailMessage($rendered, $this->parameters['from_email']['resetting'], $user->getEmail()); + } + + protected function sendEmailMessage($renderedTemplate, $fromEmail, $toEmail) + { + // Render the email, use the first line as the subject, and the rest as the body + $renderedLines = explode("\n", trim($renderedTemplate)); + $subject = $renderedLines[0]; + $body = implode("\n", array_slice($renderedLines, 1)); + + $message = \Swift_Message::newInstance() + ->setSubject($subject) + ->setFrom($fromEmail) + ->setTo($toEmail) + ->setBody($body); + + $this->mailer->send($message); + } +}