public function registerAction(Request $request) { $em = $this->getDoctrine()->getManager(); /** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */ $dispatcher = $this->get('event_dispatcher'); $user = new UsuarioEntity(); $user->setLastModified(new \DateTime()); if ($request->getMethod() == 'GET') { //Usar getClientIp. $content = @file_get_contents('http://www.geoplugin.net/php.gp?ip=212.128.152.1'); if (isset($http_response_header) && strpos($http_response_header[0], '200')) { $meta = unserialize($content); //Obtenemos el pais. $defaultCountry = $em->getRepository('juzzUsuariosBundle:Paises')->findOneBy(array('iso' => $meta['geoplugin_countryCode'])); //Establecemos origen por defecto. $user->setOrigen($defaultCountry); } } $form = $this->createForm(new UsuarioRegistroType(), $user); $form->handleRequest($request); if ($form->isValid()) { $event = new RegistrationEvent($form, $user); $dispatcher->dispatch(UsuariosBundleEvents::REGISTRATION_SUCCESS, $event); //Necesitamos saber el algoritmo de codificación utilizado en la contraseña. //Para poderlo aplicar a nuestros usuarios. $encoder = $this->get('security.encoder_factory')->getEncoder($user); $password = $encoder->encodePassword($user->getPlainPassword(), $user->getSalt()); $user->setPassword($password); $user->setIngreso(new \DateTime()); //Establecemos politica de comentarios por defecto. $policy = $em->getRepository('juzzCommentsBundle:PoliticaComentarios')->find(1); $user->setPoliticaComentarios($policy); if (null === ($response = $event->getResponse())) { $user->setActivo(1); $translated = $this->get('translator')->trans('registration.flash.user_created', array('%username%' => $user->getFullName()), 'juzzUsuariosBundle'); // Crear un mensaje flash para notificar al usuario que se ha registrado correctamente $this->get('ras_flash_alert.alert_reporter')->addSuccess($translated); //Notificamos que la cuenta ha sido activada. $event = new RegistrationConfirmedEvent($user); $dispatcher->dispatch(UsuariosBundleEvents::REGISTRATION_CONFIRM, $event); if (null === ($response = $event->getResponse())) { $response = $this->redirect($this->generateUrl('confirmed')); } } // Guardar el nuevo usuario en la base de datos $em->persist($user); $em->flush(); return $response; } return $this->render('juzzUsuariosBundle:Accounts:registration/register.html.twig', array('form' => $form->createView())); }
/** * Añade un nuevo follower a $user * @ParamConverter("user", options={"mapping": {"user" = "id"}}) * @ParamConverter("follower", options={"mapping": {"follower" = "id"}}) */ public function addAction(UsuarioEntity $user, UsuarioEntity $follower) { $flashBag = $this->get('ras_flash_alert.alert_reporter'); if (!$user->getFollowers()->contains($follower)) { $em = $this->getDoctrine()->getManager(); $user->setLastModified(new \DateTime()); $follow = new FollowerEntity(); $follow->setDate(new \DateTime()); $follow->setFollowing($user); $follow->setFollower($follower); $em->persist($follow); $em->flush(); $flashBag->addSuccess("Ahora sigues a {$user->getFullName()}"); } else { $flashBag->addSuccess("Ya eres seguidor de {$user->getFullName()}"); } return $this->redirectToRoute('perfil', array('user' => $user->getNick())); }