/** * @Route("/pelicula/{id}-{titulo}", requirements={"id" = "\d+"}, name="pelicula_show") * @Route("/pelicula/{id}-{titulo}/ordenar-por-{campo}-{orden}", requirements={"id" = "\d+"}, defaults={"campo" = null, "orden" = null}, name="pelicula_show_order") */ public function peliculasAction(Request $request) { $id = $request->get('id'); $campo = $request->get('campo'); $orden = $request->get('orden'); /* Formulario de preguntas */ $form_question = $this->createFormBuilder()->add('comentario', 'textarea', array('attr' => array('cols' => '50', 'rows' => '4', 'maxlength' => '500', 'class' => 'form-control submitComment')))->add('tipo', 'hidden', array('attr' => array('value' => 'p')))->add('save', 'submit', array('label' => 'Enviar comentario', 'attr' => array('class' => 'btn btn-primary')))->getForm(); $form_question->handleRequest($request); /* Formulario de respuestas */ $form_reply = $this->createFormBuilder()->add('comentario', 'textarea', array('attr' => array('cols' => '50', 'rows' => '4', 'maxlength' => '500', 'class' => 'form-control submitComment')))->add('tipo', 'hidden', array('attr' => array('value' => 'r')))->add('comentario_parent_id', 'hidden', array('attr' => array('value' => '')))->add('save', 'submit', array('label' => 'Enviar respuesta', 'attr' => array('class' => 'btn btn-primary')))->getForm(); $form_reply->handleRequest($request); // user_id $current_user = $this->container->get('security.context')->getToken()->getUser(); // produccion_id $current_produccion = $this->getDoctrine()->getRepository('AppBundle:Produccion')->find($id); // Comprobamos si se realizó un comentario if ($request->isMethod('POST')) { $formData = $request->get('form'); $com = new Comentario(); $com->setComentario($formData['comentario']); if ($formData['tipo'] == "r") { $com->setComentarioParentId($formData['comentario_parent_id']); } $tz = new \DateTimeZone("Europe/Madrid"); $current_date = new \DateTime("now", $tz); $com->setFechaHora($current_date); $com->setTipo($formData['tipo']); $com->setUsuario($current_user); $com->setProduccion($current_produccion); if ($form_question->isValid() || $form_reply->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($com); $em->flush(); return new Response('Comentario añadido correctamente!'); } } // Información general $em = $this->getDoctrine()->getManager(); $query = $em->createQuery("\n SELECT p, t, pe, fec, pa\n FROM AppBundle:Produccion p\n JOIN p.titulos t\n JOIN p.pelicula pe\n LEFT JOIN pe.fechasEstrenoCines fec\n LEFT JOIN fec.pais pa\n WHERE t.paisId = 1 and pe.id = '{$id}'\n "); $data = array(); if (count($query->getResult()) > 0) { foreach ($query->getResult() as $produccion) { switch ($produccion->getTipo()) { case 'p': $tipo = "peliculas"; break; case 's': $tipo = "series"; break; case 'a': $tipo = "anuncios"; break; } $produccion->tipoProduccion = $tipo; $produccion->banner = str_replace(".jpg", "_banner.jpg", $produccion->getCartel()); // Protagonistas $protagonistas = explode(",", $produccion->getProtagonistas()); $num_actores = count($protagonistas); $i = 0; foreach ($protagonistas as $protagonista) { $produccion->protagonistasLinks .= "<a href='#'>" . $protagonista . "</a>"; if (++$i != $num_actores) { $produccion->protagonistasLinks .= ", "; } } $data[] = $produccion; } } $produccion = $data; if (!$produccion) { throw $this->createNotFoundException('Id ' . $id . ' no encontrada'); } // Lista de canciones $em = $this->getDoctrine()->getManager(); $query_canciones = "SELECT c, pc, pe, cs, s, a\n FROM AppBundle:PeliculasCanciones pc\n JOIN pc.cancion c\n JOIN pc.pelicula pe\n JOIN c.cancionesSitios cs\n JOIN cs.sitio s\n JOIN c.artista a\n WHERE pe.id = '{$id}'"; if ($campo != null && $orden != null) { switch ($campo) { case 'titulo': $query_canciones .= "ORDER BY c.titulo"; break; case 'artista': $query_canciones .= "ORDER BY a.nombre"; break; case 'minuto': $query_canciones .= "ORDER BY pc.minuto"; break; default: $query_canciones .= "ORDER BY c.id"; break; } $query_canciones .= " {$orden}"; } $query = $em->createQuery($query_canciones); $lista_canciones = $query->getResult(); /*if(!$lista_canciones) { throw $this->createNotFoundException( 'No hay resultados' ); }*/ // Sitios $em = $this->getDoctrine()->getManager(); $query = $em->createQuery("\n SELECT cs\n FROM AppBundle:CancionesSitios cs\n "); $sitios = $query->getResult(); // Canciones Populares $em = $this->getDoctrine()->getManager(); $query = $em->createQuery("\n SELECT c, a\n FROM AppBundle:Cancion c\n JOIN c.artista a\n ")->setMaxResults(8); $canciones_populares = $query->getResult(); if (!$canciones_populares) { throw $this->createNotFoundException('No hay resultados'); } // Preguntas y respuestas $em = $this->getDoctrine()->getManager(); $query = $em->createQuery("\n SELECT c, u\n FROM AppBundle:Comentario c\n JOIN c.usuario u\n WHERE c.produccion = '{$id}'\n "); $pr = $query->getResult(); $comentarios = NULL; if (count($pr) > 0) { $comentarios = $this->buildTree($pr); } // Siguiendo $usuario = $this->container->get('security.context')->getToken()->getUser(); // Compruebo si ya la está siguiendo $em = $this->getDoctrine()->getManager(); $siguiendo = $em->getRepository('AppBundle:UsuariosProducciones')->findOneBy(array('usuario' => $usuario, 'produccion' => $produccion)); return $this->render('peliculas.ficha.html.twig', array('siguiendo' => $siguiendo, 'campo_orden' => $campo, 'orden' => $orden, 'produccion' => $produccion, 'lista_canciones' => $lista_canciones, 'sitios' => $sitios, 'comentarios' => $comentarios, 'canciones_populares' => $canciones_populares, 'form_question' => $form_question->createView(), 'form_reply' => $form_reply->createView())); }
/** * @Route("/serie/{id}-{titulo}/temporada-{nt}", requirements={"id" = "\d+", "nt" = "\d+"}, name="temporada_show") */ public function temporadasAction(Request $request) { $id = $request->get('id'); // Id de serie $nt = $request->get('nt'); // Nº de temporada // user_id $current_user = $this->container->get('security.context')->getToken()->getUser(); // produccion_id $current_produccion = $this->getDoctrine()->getRepository('AppBundle:Produccion')->find($id); // Comprobamos si se realizó un comentario if ($request->isMethod('POST')) { $formData = $request->get('form'); $com = new Comentario(); $com->setComentario($formData['comentario']); if ($formData['tipo'] == "r") { $com->setComentarioParentId($formData['comentario_parent_id']); } $tz = new \DateTimeZone("Europe/Madrid"); $current_date = new \DateTime("now", $tz); $com->setFechaHora($current_date); $com->setTipo($formData['tipo']); $com->setUsuario($current_user); $com->setProduccion($current_produccion); if ($form_question->isValid() || $form_reply->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($com); $em->flush(); return new Response('Comentario añadido correctamente!'); } } // Información general $em = $this->getDoctrine()->getManager(); $query = $em->createQuery("\n SELECT p, t, s\n FROM AppBundle:Produccion p\n JOIN p.serie s\n JOIN p.titulos t\n WHERE t.paisId = 1 and s.id = '{$id}'\n "); $data = array(); if (count($query->getResult()) > 0) { foreach ($query->getResult() as $produccion) { switch ($produccion->getTipo()) { case 'p': $tipo = "peliculas"; break; case 's': $tipo = "series"; break; case 'a': $tipo = "anuncios"; break; } $produccion->tipoProduccion = $tipo; $produccion->banner = str_replace(".jpg", "_banner.jpg", $produccion->getCartel()); $data[] = $produccion; } } $produccion = $data; if (!$produccion) { throw $this->createNotFoundException('Id ' . $id . ' no encontrada'); } // Información de la temporada $em = $this->getDoctrine()->getManager(); $query = $em->createQuery("\n SELECT te, se, ca\n FROM AppBundle:temporada te\n JOIN te.serie se\n JOIN te.capitulos ca\n LEFT JOIN ca.capitulosCanciones cc\n WHERE se.id = '{$id}' and te.numeroTemporada = '{$nt}'\n "); $info_temporada = $query->getResult(); if (!$info_temporada) { throw $this->createNotFoundException('No se encontró la temporada'); } // Canciones Populares $em = $this->getDoctrine()->getManager(); $query = $em->createQuery("\n SELECT c, a\n FROM AppBundle:Cancion c\n JOIN c.artista a\n ")->setMaxResults(8); $canciones_populares = $query->getResult(); if (!$canciones_populares) { throw $this->createNotFoundException('No hay resultados'); } // Siguiendo $usuario = $this->container->get('security.context')->getToken()->getUser(); // Compruebo si ya la está siguiendo $em = $this->getDoctrine()->getManager(); $siguiendo = $em->getRepository('AppBundle:UsuariosProducciones')->findOneBy(array('usuario' => $usuario, 'produccion' => $produccion)); return $this->render('temporadas.ficha.html.twig', array('siguiendo' => $siguiendo, 'produccion' => $produccion, 'nt' => $nt, 'info_temporada' => $info_temporada, 'canciones_populares' => $canciones_populares)); }