Esempio n. 1
0
 /**
  * @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()));
 }