/** * @param Request $request * @param Application $app * * @return mixed */ public function agregar(Request $request, Application $app) { $alias = $app['security']->getToken()->getUser()->getUsername(); $usuarioModel = new Usuario($app['db']); $usuario = $usuarioModel->getUsuarioPorAlias($alias); // El autor del articulo debe ser el logueado $idAutor = $usuario['id']; // Categorías $categoriaModelo = new Categoria($app['db']); $categorias = $categoriaModelo->getTodo(); $categoriasOpcion = array(); foreach ($categorias as $categoria) { $categoriasOpcion[$categoria['id']] = $categoria['nombre']; } // Etiquetas $etiquetaModelo = new Etiqueta($app['db']); $etiquetas = $etiquetaModelo->getTodo(); $etiquetasOpcion = array(); foreach ($etiquetas as $etiqueta) { $etiquetasOpcion[$etiqueta['id']] = $etiqueta['nombre']; } $initial_data = array('imagen' => '', 'categoria' => '', 'titulo' => '', 'descripcion' => '', 'contenido' => '', 'fecha_publicacion' => ''); $form = $app['form.factory']->createBuilder('form', $initial_data); $form = $form->add('categoria', 'choice', array('choices' => $categoriasOpcion, 'required' => true)); $form = $form->add('etiquetas', 'choice', array('choices' => $etiquetasOpcion, 'required' => false, "multiple" => true)); $form = $form->add('imagen', 'url', array('required' => true)); $form = $form->add('titulo', 'text', array('required' => true)); $form = $form->add('descripcion', 'text', array('required' => true)); $form = $form->add('contenido', 'textarea', array('required' => true)); $form = $form->getForm(); if ($request->isXmlHttpRequest()) { $form->handleRequest($request); if ($form->isValid()) { $data = $form->getData(); $articuloModelo = new ArticuloModelo($app['db']); $accion = $request->get('accion'); if ($accion == 'borrador') { $filasAfectadas = $articuloModelo->guardar($idAutor, $data['categoria'], $data['imagen'], $data['titulo'], $data['descripcion'], $data['contenido'], $data['etiquetas'], 'B'); } elseif ($accion == 'publicado') { $filasAfectadas = $articuloModelo->guardar($idAutor, $data['categoria'], $data['imagen'], $data['titulo'], $data['descripcion'], $data['contenido'], $data['etiquetas'], 'A'); } if (is_array($filasAfectadas)) { if (!empty($filasAfectadas['etiquetas'])) { $filasAfectadasEtiqueta = count($filasAfectadas['etiquetas']); $etiquetasAgregadas = array(); foreach ($filasAfectadas['etiquetas'] as $etiqueta) { $etiquetasAgregadas[] = $etiquetasOpcion[$etiqueta]; } $message = "¡Artículo creado! Etiquetas agregadas: {$filasAfectadasEtiqueta} - " . implode(', ', $etiquetasAgregadas) . "."; } else { $message = "¡Artículo creado!"; } $app['session']->getFlashBag()->add('success', array('message' => $message)); return new JsonResponse('Articulo creado', 200); } else { return new JsonResponse('Articulo no guardado', 202); } } else { print_r($form->getData()); return new JsonResponse('No todos los campos fueron completados', 202); } } return $app['twig']->render('backend/articulo/create.html.twig', array("form" => $form->createView())); }