/** * Register an user in a game -> requires password only in case admin requires it. * @param Request $request * @param $id_partida * @return RedirectResponse|\Symfony\Component\HttpFoundation\Response */ public function partidaRegisterAction(Request $request, $id_partida) { $this->denyAccessUnlessGranted('ROLE_USER', null, 'Unable to access this page!'); //set language $locale = $request->get('_locale'); $request->setLocale($locale); $request->getSession()->set('_locale', $locale); $user = $this->getUser(); $user_id = $user->getId(); $gravatar = $this->getGravatar($user->getEmail()); /** @var ObjectManager $em */ $em = $this->getDoctrine()->getManager(); $router = $this->container->get('router'); try { $em->getRepository('BaseBundle:UserPartida')->findByIDS($user_id, $id_partida); return new RedirectResponse($this->get('router')->generate('partida_home', array('id_partida' => $id_partida))); } catch (\Exception $e) { /** @var Partida $partida */ $partida = $em->getRepository('BaseBundle:Partida')->findOneById($id_partida); if ($partida->getEmpezado()) { $this->get('session')->getFlashBag()->add('started', ''); } else { $partidaLogic = new PartidaLogic(); if ($partida->getPassword() == null) { $partidaLogic->newPlayer($partida, $user_id, $em); return new RedirectResponse($this->container->get('router')->generate('partida_home', array('id_partida' => $id_partida))); } else { //creamos el formulario $form = $this->createFormBuilder()->add('password', 'password', array('required' => true, 'label' => 'partida.password', 'translation_domain' => 'BaseBundle'))->getForm(); $form->handleRequest($request); if ($form->isValid() && $request->isMethod('POST')) { $data = $form->getData(); if (strcmp($data['password'], $partida->getPassword()) == 0) { $partidaLogic->newPlayer($partida, $user_id, $em); return new RedirectResponse($this->container->get('router')->generate('partida_home', array('id_partida' => $id_partida))); } else { $form->get('password')->addError(new FormError($this->get('translator')->trans('Incorrect password'))); } } return $this->render('BaseBundle:Partida:registerP.html.twig', array('partida' => $partida, 'form' => $form->createView(), 'gravatar' => $gravatar)); } } return new RedirectResponse($router->generate('base_homepage')); } }