예제 #1
0
파일: buscador.php 프로젝트: 4bs4/marifa
 /**
  * Post con las mismas etiquetas que el selecionado.
  * @param int $post ID del post a mostrar relacionados.
  * @param int $pagina Número de página a mostrar.
  */
 public function action_relacionados($post, $pagina)
 {
     // Transformamos a entero.
     $post = (int) $post;
     // Cargamos el post.
     $model_post = new Model_Post($post);
     // Verificamos existencia.
     if (!$model_post->existe()) {
         Request::redirect('/buscador/q/');
     }
     // Cargamos la vista.
     $vista = View::factory('buscador/index');
     // Formato de la página.
     $pagina = (int) $pagina > 0 ? (int) $pagina : 1;
     // Cantidad de elementos por pagina.
     $model_configuracion = new Model_Configuracion();
     $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20);
     // Realizamos la busqueda.
     list($listado, $cantidad) = $model_post->buscar_relacionados($pagina, $cantidad_por_pagina);
     // Verifivo que la página seleccionada sea válida.
     if (count($listado) == 0 && $pagina != 1) {
         Request::redirect('/buscador/relacionados/' . $post);
     }
     // Paginación.
     $paginador = new Paginator($cantidad, $cantidad_por_pagina);
     $vista->assign('paginacion', $paginador->get_view($pagina, "/buscador/relacionados/{$post}/%s/"));
     unset($paginador);
     $vista->assign('total', $cantidad);
     // Procesamos listado de post.
     foreach ($listado as $k => $v) {
         $a = $v->as_array();
         $a['usuario'] = $v->usuario()->as_array();
         $a['puntos'] = $v->puntos();
         $a['comentarios'] = $v->cantidad_comentarios();
         $a['categoria'] = $v->categoria()->as_array();
         $listado[$k] = $a;
     }
     $vista->assign('resultados', $listado);
     unset($listado);
     $vista->assign('q', '');
     // Vista de relacionado.
     $view_relacionado = View::factory('buscador/relacionado');
     $view_relacionado->assign('post', $model_post->as_array());
     $vista->assign('relacionado', $view_relacionado->parse());
     unset($view_relacionado);
     // Listado de categorias.
     $mc = new Model_Categoria();
     $vista->assign('categorias', $mc->lista());
     unset($mc);
     $vista->assign('categoria', 'todos');
     $vista->assign('usuario', '');
     // Menu.
     $this->template->assign('master_bar', parent::base_menu());
     $this->template->assign('top_bar', Controller_Home::submenu('buscador'));
     // Asignamos la vista.
     $this->template->assign('contenido', $vista->parse());
 }
예제 #2
0
파일: contenido.php 프로젝트: 4bs4/marifa
 /**
  * Realizo el cambio de estados del post.
  * @param int $post ID del post al cual cambiarle el estado.
  * @param int $estado Estado que se debe colocar.
  */
 public function action_cambiar_estado_post($post, $estado)
 {
     $post = (int) $post;
     // Cargo el post.
     $model_post = new Model_Post($post);
     // Verifico que exista.
     if (!$model_post->existe()) {
         $_SESSION['flash_error'] = 'El post al cual le quiere cambiar el estado no se encuentra disponible.';
         Request::redirect('/admin/contenido/posts');
     }
     // Obtengo el estado.
     switch ($model_post->estado) {
         case 0:
             // Activo
             if ($estado == Model_Post::ESTADO_BORRADO) {
                 // Borramos.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(Model_Post::ESTADO_BORRADO);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_borrar', TRUE, $model_post->id, Usuario::$usuario_id);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'El post se a eliminado correctamente.';
                 Request::redirect('/admin/contenido/posts');
             } elseif ($estado == Model_Post::ESTADO_OCULTO) {
                 // Ocultamos.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(Model_Post::ESTADO_OCULTO);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_ocultar', TRUE, $model_post->id, Usuario::$usuario_id, 0);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_ocultar', FALSE, $model_post->id, Usuario::$usuario_id, 0);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_ocultar', FALSE, $model_post->id, Usuario::$usuario_id, 0);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } elseif ($estado == 5) {
                 // Rechazamos.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(5);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_aprobar', TRUE, $model_post->id, Usuario::$usuario_id, 0);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_aprobar', FALSE, $model_post->id, Usuario::$usuario_id, 0);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_aprobar', FALSE, $model_post->id, Usuario::$usuario_id, 0);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } elseif ($estado == 6) {
                 // Enviamos a la papelera.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(6);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_papelera', TRUE, $model_post->id, Usuario::$usuario_id);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_papelera', FALSE, $model_post->id, Usuario::$usuario_id);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_papelera', FALSE, $model_post->id, Usuario::$usuario_id);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } else {
                 // Acción no permitida.
                 $_SESSION['flash_error'] = 'No puedes realizar esa acción.';
                 Request::redirect('/admin/contenido/posts');
             }
             break;
         case 1:
             // Borrador
             if ($estado == 2) {
                 // Borramos.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(2);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_borrar', TRUE, $model_post->id, Usuario::$usuario_id);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } else {
                 // Acción no permitida.
                 $_SESSION['flash_error'] = 'No puedes realizar esa acción.';
                 Request::redirect('/admin/contenido/posts');
             }
             break;
         case 2:
             // Borrado
             // No hay acciones posibles a este punto.
             $_SESSION['flash_error'] = 'No puedes realizar esa acción.';
             Request::redirect('/admin/contenido/posts');
             break;
         case 3:
             // Pendiente
             if ($estado == 0) {
                 // Aprobamos.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(0);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_aprobar', TRUE, $model_post->id, Usuario::$usuario_id, 1);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_aprobar', FALSE, $model_post->id, Usuario::$usuario_id, 1);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_aprobar', FALSE, $model_post->id, Usuario::$usuario_id, 1);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } elseif ($estado == 5) {
                 // Rechazamos.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(5);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_aprobar', TRUE, $model_post->id, Usuario::$usuario_id, 0);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_aprobar', FALSE, $model_post->id, Usuario::$usuario_id, 0);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_aprobar', FALSE, $model_post->id, Usuario::$usuario_id, 0);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } elseif ($estado == 2) {
                 // Borramos.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(2);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_borrar', TRUE, $model_post->id, Usuario::$usuario_id);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } else {
                 // Acción no permitida.
                 $_SESSION['flash_error'] = 'No puedes realizar esa acción.';
                 Request::redirect('/admin/contenido/posts');
             }
             break;
         case 4:
             // Oculto
             if ($estado == 0) {
                 // Mostrar.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(0);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_ocultar', TRUE, $model_post->id, Usuario::$usuario_id, 1);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_ocultar', FALSE, $model_post->id, Usuario::$usuario_id, 1);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_ocultar', FALSE, $model_post->id, Usuario::$usuario_id, 1);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } elseif ($estado == 2) {
                 // Borramos.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(2);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_borrar', TRUE, $model_post->id, Usuario::$usuario_id);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } else {
                 // Acción no permitida.
                 $_SESSION['flash_error'] = 'No puedes realizar esa acción.';
                 Request::redirect('/admin/contenido/posts');
             }
             break;
         case 5:
             // Rechazado
             if ($estado == 0) {
                 // Aprobamos.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(0);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_aprobar', TRUE, $model_post->id, Usuario::$usuario_id, 1);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_aprobar', FALSE, $model_post->id, Usuario::$usuario_id, 1);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_aprobar', FALSE, $model_post->id, Usuario::$usuario_id, 1);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } elseif ($estado == 2) {
                 // Borramos.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(2);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_borrar', TRUE, $model_post->id, Usuario::$usuario_id);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } else {
                 // Acción no permitida.
                 $_SESSION['flash_error'] = 'No puedes realizar esa acción.';
                 Request::redirect('/admin/contenido/posts');
             }
             break;
         case 6:
             // Papelera
             if ($estado == 0) {
                 // Restauramos.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(0);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_restaurar', TRUE, $model_post->id, Usuario::$usuario_id);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_restaurar', FALSE, $model_post->id, Usuario::$usuario_id);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_restaurar', FALSE, $model_post->id, Usuario::$usuario_id);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } elseif ($estado == 2) {
                 // Borramos.
                 // Actualizo el estado.
                 $model_post->actualizar_estado(2);
                 // Envio el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_borrar', TRUE, $model_post->id, Usuario::$usuario_id);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
                 }
                 // Informo el resultado
                 $_SESSION['flash_success'] = 'Actualización correcta.';
                 Request::redirect('/admin/contenido/posts');
             } else {
                 // Acción no permitida.
                 $_SESSION['flash_error'] = 'No puedes realizar esa acción.';
                 Request::redirect('/admin/contenido/posts');
             }
             break;
     }
 }
예제 #3
0
파일: denuncias.php 프로젝트: 4bs4/marifa
 /**
  * Borramos un post.
  * @param int $post ID del post a borrar.
  */
 public function action_borrar_post($post)
 {
     // Verifico permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_VER_DENUNCIAS)) {
         $_SESSION['flash_error'] = 'No tienes permiso para acceder a esa sección.';
         Request::redirect('/');
     }
     // Cargamos el post.
     $post = (int) $post;
     $model_post = new Model_Post($post);
     // Verifico existencia del post.
     if (!$model_post->existe()) {
         $_SESSION['flash_error'] = 'El post que deseas borrar no se encuentra disponible.';
         Request::redirect('/moderar/denuncias/posts');
     }
     // Verifico los permisos.
     if (Usuario::$usuario_id !== $model_post->usuario_id && !Usuario::permiso(Model_Usuario_Rango::PERMISO_ELIMINAR_POSTS)) {
         $_SESSION['flash_error'] = 'No tienes permisos para realizar esa acción.';
         Request::redirect('/moderar/denuncias/posts');
     }
     // Verifico el estado.
     if ($model_post->estado === Model_Post::ESTADO_BORRADO) {
         $_SESSION['flash_error'] = 'El post que deseas borrar no se encuentra disponible.';
         Request::redirect('/moderar/denuncias/posts');
     }
     // Actualizo el post.
     $model_post->actualizar_campo('estado', Model_Post::ESTADO_BORRADO);
     // Enviamos el suceso.
     $model_suceso = new Model_Suceso();
     if (Usuario::$usuario_id != $model_post->usuario_id) {
         $model_suceso->crear($model_post->usuario_id, 'post_borrar', TRUE, $post, Usuario::$usuario_id);
         $model_suceso->crear(Usuario::$usuario_id, 'post_borrar', FALSE, $post, Usuario::$usuario_id);
     } else {
         $model_suceso->crear($model_post->usuario_id, 'post_borrar', FALSE, $post, Usuario::$usuario_id);
     }
     // Informamos el resultado.
     $_SESSION['flash_success'] = 'Post eliminado correctamente.';
     Request::redirect('/moderar/denuncias/posts');
 }
예제 #4
0
파일: post.php 프로젝트: 4bs4/marifa
 /**
  * Creamos un nuevo post.
  * @param int $post ID del post a editar.
  */
 public function action_editar($post)
 {
     // Verificamos usuario logueado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes iniciar sessión para poder editar posts.';
         Request::redirect('/usuario/login');
     }
     // Limpio la entrada
     $post = (int) $post;
     // Cargo el post.
     $model_post = new Model_Post($post);
     // Verifico exista.
     if (!$model_post->existe()) {
         $_SESSION['flash_error'] = 'El post especificado no se encuentra disponible.';
         Request::redirect('/');
     }
     // No podemos editar posts borrados.
     if ($model_post->estado == Model_Post::ESTADO_BORRADO) {
         $_SESSION['flash_error'] = 'El post especificado no se encuentra disponible.';
         Request::redirect('/post/index/' . $post);
     }
     // Verifico el usuario y el permiso de edición para terceros.
     if (Usuario::$usuario_id !== $model_post->usuario_id && !Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_EDITAR)) {
         $_SESSION['flash_error'] = 'No tienes los permisos necesarios para realizar esa edición.';
         Request::redirect('/post/index/' . $post);
     }
     // Asignamos el título.
     $this->template->assign('title', 'Editar post');
     // Cargamos la vista.
     $view = View::factory('post/editar');
     $view->assign('post', $post);
     // Seteo permisos especiales.
     $view->assign('permisos_especiales', Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_FIJAR_PROMOVER));
     // Cargamos valores por defecto.
     $view->assign('titulo', $model_post->titulo);
     $view->assign('contenido', $model_post->contenido);
     $view->assign('categoria', $model_post->categoria()->seo);
     $view->assign('privado', $model_post->privado);
     $view->assign('patrocinado', $model_post->sponsored);
     $view->assign('sticky', $model_post->sticky);
     $view->assign('comentar', $model_post->comentar);
     $view->assign('tags', implode(', ', $model_post->etiquetas()));
     // Elementos por defecto.
     foreach (array('error_titulo', 'error_contenido', 'error_categoria', 'error_tags') as $k) {
         $view->assign($k, FALSE);
     }
     // Listado de categorias.
     $model_categoria = new Model_Categoria();
     $view->assign('categorias', $model_categoria->lista());
     // Menu.
     $this->template->assign('master_bar', parent::base_menu('posts'));
     $this->template->assign('top_bar', Controller_Home::submenu('index'));
     // Asignamos la vista.
     $this->template->assign('contenido', $view->parse());
     if (Request::method() == 'POST') {
         $error = FALSE;
         // Obtenemos los datos y seteamos valores.
         foreach (array('titulo', 'contenido', 'categoria', 'tags') as $k) {
             ${$k} = isset($_POST[$k]) ? $_POST[$k] : '';
             $view->assign($k, ${$k});
         }
         // Obtenemos los checkbox.
         foreach (array('privado', 'patrocinado', 'sticky', 'comentar') as $k) {
             ${$k} = isset($_POST[$k]) ? $_POST[$k] == 1 : FALSE;
             $view->assign($k, ${$k});
         }
         // Verificamos el titulo.
         if (!preg_match('/^[a-zA-Z0-9áéíóú\\-,\\.:\\s]{6,60}$/D', $titulo)) {
             $view->assign('error_titulo', 'El formato del título no es correcto.');
             $error = TRUE;
         }
         // Verificamos el contenido.
         $contenido_clean = preg_replace('/\\[.*\\]/', '', $contenido);
         if (!isset($contenido_clean[20]) || isset($contenido[5000])) {
             $view->assign('error_contenido', 'El contenido debe tener entre 20 y 5000 caractéres.');
             $error = TRUE;
         }
         unset($contenido_clean);
         // Verificamos la categoria.
         $model_categoria = new Model_Categoria();
         if (!$model_categoria->existe_seo($categoria)) {
             $view->assign('error_categoria', 'La categoría seleccionada es incorrecta.');
             $error = TRUE;
         } else {
             $model_categoria->load_by_seo($categoria);
             $categoria_id = $model_categoria->id;
         }
         unset($model_categoria);
         // Quito espacios adicionales a las etiquetas.
         $tags = preg_replace('/\\s+/', ' ', trim($tags));
         // Verificamos las etiquetas.
         if (!preg_match('/^[a-zA-Z0-9áéíóúñÑÁÉÍÓÚ, ]{0,}$/D', $tags)) {
             $view->assign('error_tags', 'Las etiquetas ingresadas con son alphanuméricas..');
             $error = TRUE;
         }
         // Procedemos a crear el post.
         if (!$error) {
             // Evitamos XSS.
             $contenido = htmlentities($contenido, ENT_NOQUOTES, 'UTF-8');
             // Formateamos los campos.
             $titulo = trim(preg_replace('/\\s+/', ' ', $titulo));
             // Obtengo el listado de etiquetas.
             $tags = explode(',', $tags);
             foreach ($tags as $k => $v) {
                 $tags[$k] = trim($v);
                 if ($tags[$k] == '') {
                     unset($tags[$k]);
                 }
             }
             // Obtengo listado a agregar, quitar y mantener.
             $delta_etiquetas = array_intersect($model_post->etiquetas(), $tags);
             $etiquetas_eliminadas = array_diff($model_post->etiquetas(), $delta_etiquetas);
             $etiquetas_nuevos = array_diff($tags, $delta_etiquetas);
             unset($tags, $delta_etiquetas);
             $datos = array('titulo' => $titulo, 'contenido' => $contenido, 'categoria_id' => $categoria_id, 'privado' => $privado, 'sponsored' => $patrocinado, 'sticky' => $sticky, 'comentar' => $comentar);
             // Verifico parámetros especiales.
             if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_FIJAR_PROMOVER)) {
                 unset($datos['sponsored'], $datos['sticky']);
             }
             // Actualizo los parámetros.
             $rst = $model_post->actualizar_campos($datos);
             // Actualizo las etiquetas.
             if (is_array($etiquetas_eliminadas) && count($etiquetas_eliminadas) > 0) {
                 $rst = $rst || $model_post->borrar_etiqueta($etiquetas_eliminadas);
             }
             if (is_array($etiquetas_nuevos) && count($etiquetas_nuevos) > 0) {
                 $rst = $rst || $model_post->agregar_etiqueta($etiquetas_nuevos);
             }
             // Emito suceso para el usuario.
             if ($rst) {
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_post->usuario_id) {
                     $model_suceso->crear($model_post->usuario_id, 'post_editado', TRUE, $model_post->id, Usuario::$usuario_id);
                     $model_suceso->crear(Usuario::$usuario_id, 'post_editado', FALSE, $model_post->id, Usuario::$usuario_id);
                 } else {
                     $model_suceso->crear($model_post->usuario_id, 'post_editado', FALSE, $model_post->id, Usuario::$usuario_id);
                 }
             }
             // Informo que todo fue correcto.
             $_SESSION['flash_success'] = 'Actualización del post correcta.';
         }
     }
     // Menu.
     $this->template->assign('master_bar', parent::base_menu('posts'));
     $this->template->assign('top_bar', Controller_Home::submenu('nuevo'));
     // Asignamos la vista.
     $this->template->assign('contenido', $view->parse());
 }