diff -r 806e57d67020 -r e54dfe4d0b2b vendor/bundles/FOS/UserBundle/Form/Handler/RegistrationFormHandler.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/bundles/FOS/UserBundle/Form/Handler/RegistrationFormHandler.php Fri Sep 30 11:24:53 2011 +0200 @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\UserBundle\Form\Handler; + +use Symfony\Component\Form\Form; +use Symfony\Component\HttpFoundation\Request; +use FOS\UserBundle\Model\UserManagerInterface; +use FOS\UserBundle\Model\UserInterface; +use FOS\UserBundle\Mailer\MailerInterface; + +class RegistrationFormHandler +{ + protected $request; + protected $userManager; + protected $form; + protected $mailer; + + public function __construct(Form $form, Request $request, UserManagerInterface $userManager, MailerInterface $mailer) + { + $this->form = $form; + $this->request = $request; + $this->userManager = $userManager; + $this->mailer = $mailer; + } + + public function process($confirmation = false) + { + $user = $this->userManager->createUser(); + $this->form->setData($user); + + if ('POST' == $this->request->getMethod()) { + $this->form->bindRequest($this->request); + + if ($this->form->isValid()) { + $this->onSuccess($user, $confirmation); + + return true; + } + } + + return false; + } + + protected function onSuccess(UserInterface $user, $confirmation) + { + if ($confirmation) { + $user->setEnabled(false); + $this->mailer->sendConfirmationEmailMessage($user); + } else { + $user->setConfirmationToken(null); + $user->setEnabled(true); + } + + $this->userManager->updateUser($user); + } +}