Beispiel #1
0
 /**
  * Portada de la administración de contenido.
  * Veo estadísticas sobre contenido en la comunidad.
  */
 public function action_index()
 {
     // Cargamos la vista.
     $vista = View::factory('admin/contenido/index');
     // Cantidades de posts por estado.
     $vista->assign('post_estado', Model_Post::cantidad_agrupados());
     // Cantidades de posts por categoria.
     $vista->assign('posts_categorias', Model_Post::cantidad_categorias());
     // Cantidad de comentarios en posts por estado.
     $vista->assign('post_comentarios_estado', Model_Post_Comentario::cantidad_agrupados());
     // Cantidad de fotos por estado.
     $vista->assign('foto_estado', Model_Foto::cantidad_agrupados());
     // Cantidad de comentarios en fotos por estado.
     $vista->assign('foto_comentarios_estado', Model_Foto_Comentario::cantidad_agrupados());
     // Cantidad de fotos por categoria.
     $vista->assign('fotos_categorias', Model_Foto::cantidad_categorias());
     // Seteamos el menu.
     $this->template->assign('master_bar', parent::base_menu('admin'));
     // Cargamos plantilla administracion.
     $admin_template = View::factory('admin/template');
     $admin_template->assign('contenido', $vista->parse());
     unset($portada);
     $admin_template->assign('top_bar', Controller_Admin_Home::submenu('contenido'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }
Beispiel #2
0
 /**
  * Suceso producido cuando se edita el comentario de un usuario.
  * @param array $suceso Datos del suceso.
  * @return array
  */
 protected static function suceso_post_comentario_editar($suceso)
 {
     // Verifico si fui yo.
     if ($suceso['objeto_id1'] == Usuario::$usuario_id) {
         return NULL;
     }
     // Cargo el comentario.
     $model_comentario = new Model_Post_Comentario((int) $suceso['objeto_id']);
     // Cargo el usuario que edita.
     $model_usuario = new Model_Usuario((int) $suceso['objeto_id1']);
     return array('post' => $model_comentario->post()->as_array(), 'comentario_usuario' => $model_comentario->usuario()->as_array(), 'usuario' => $model_usuario->as_array());
 }
Beispiel #3
0
 /**
  * Portada del sitio.
  * @param int $pagina Número de página para lo últimos posts.
  */
 public function action_index($pagina)
 {
     // Cargamos la portada.
     $portada = View::factory('home/index');
     // Seteo el menu.
     $this->template->assign('master_bar', parent::base_menu('posts'));
     $this->template->assign('top_bar', self::submenu('inicio'));
     // Cargamos datos de posts.
     $model_post = new Model_Post();
     // Cantidad posts y comentarios en posts.
     $portada->assign('cantidad_posts', $model_post->cantidad());
     $portada->assign('cantidad_comentarios_posts', $model_post->cantidad_comentarios());
     // Cantidad de elementos por pagina.
     $model_configuracion = new Model_Configuracion();
     $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20);
     // Formato de la página.
     $pagina = (int) $pagina > 0 ? (int) $pagina : 1;
     if ($pagina == 1) {
         // Cargo fijos.
         $post_sticky = $model_post->sticky();
         // Extendemos la información de los posts.
         foreach ($post_sticky as $k => $v) {
             $a = $v->as_array();
             $a['usuario'] = $v->usuario()->as_array();
             $a['puntos'] = $v->puntos();
             $a['comentarios'] = $v->cantidad_comentarios(Model_Post_Comentario::ESTADO_VISIBLE);
             $a['categoria'] = $v->categoria()->as_array();
             $post_sticky[$k] = $a;
         }
         // Seteo y limpio.
         $portada->assign('sticky', $post_sticky);
         unset($post_sticky);
     }
     // Ultimos posts
     $post_list = $model_post->obtener_ultimos($pagina, $cantidad_por_pagina);
     // Verifivo validez de la pagina.
     if (count($post_list) == 0 && $pagina != 1) {
         Request::redirect('/');
     }
     // Paginación.
     $paginador = new Paginator($model_post->cantidad(Model_Post::ESTADO_ACTIVO), $cantidad_por_pagina);
     $portada->assign('paginacion', $paginador->get_view($pagina, '/home/index/%d'));
     unset($paginador);
     // Extendemos la información de los posts.
     foreach ($post_list as $k => $v) {
         $a = $v->as_array();
         $a['usuario'] = $v->usuario()->as_array();
         $a['puntos'] = $v->puntos();
         $a['comentarios'] = $v->cantidad_comentarios(Model_Post_Comentario::ESTADO_VISIBLE);
         $a['categoria'] = $v->categoria()->as_array();
         $post_list[$k] = $a;
     }
     $portada->assign('ultimos_posts', $post_list);
     unset($post_list);
     // Cargamos TOP posts.
     $post_top_list = $model_post->obtener_tops();
     // Extendemos la información de los posts.
     foreach ($post_top_list as $k => $v) {
         $a = $v->as_array();
         $a['puntos'] = $v->puntos();
         $post_top_list[$k] = $a;
     }
     $portada->assign('top_posts', $post_top_list);
     unset($post_top_list, $model_post);
     // Cargamos últimos comentarios.
     $comentario_list = Model_Post_Comentario::obtener_ultimos();
     // Extendemos la información de los comentarios.
     foreach ($comentario_list as $k => $v) {
         $a = $v->as_array();
         $a['usuario'] = $v->usuario()->as_array();
         $a['post'] = $v->post()->as_array();
         $comentario_list[$k] = $a;
     }
     $portada->assign('ultimos_comentarios', $comentario_list);
     unset($comentario_list);
     // Cargamos top usuarios.
     $model_usuario = new Model_Usuario();
     // Cantidad de usuarios
     $portada->assign('cantidad_usuarios', $model_usuario->cantidad());
     $portada->assign('cantidad_usuarios_online', $model_usuario->cantidad_activos());
     // Top de usuarios.
     $usuario_top_list = $model_usuario->obtener_tops();
     // Extendemos la información de los usuarios.
     foreach ($usuario_top_list as $k => $v) {
         $a = $v->as_array();
         $a['puntos'] = $v->cantidad_puntos();
         $usuario_top_list[$k] = $a;
     }
     $portada->assign('usuario_top', $usuario_top_list);
     unset($usuario_top_list, $model_usuario);
     // Cargamos ultimas fotos.
     $model_foto = new Model_Foto();
     $foto_list = $model_foto->obtener_ultimas(1, 1);
     // Extendemos la información de las fotos.
     foreach ($foto_list as $k => $v) {
         $foto_list[$k] = $v->as_array();
     }
     $portada->assign('ultimas_fotos', $foto_list);
     unset($foto_list);
     // Cantidad fotos y comentarios en fotos.
     $portada->assign('cantidad_fotos', $model_foto->cantidad());
     $portada->assign('cantidad_comentarios_fotos', $model_foto->cantidad_comentarios());
     unset($model_foto);
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $portada->parse());
 }
Beispiel #4
0
 /**
  * Editamos un comentario.
  * @param int $comentario ID del comentario a editar.
  */
 public function action_editar_comentario($comentario)
 {
     // Verificamos usuario logueado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes iniciar sessión para poder editar comentarios en posts.';
         Request::redirect('/usuario/login');
     }
     $comentario = (int) $comentario;
     // Cargamos el comentario.
     $model_comentario = new Model_Post_Comentario($comentario);
     // Verificamos existencia.
     if (!is_array($model_comentario->as_array())) {
         $_SESSION['flash_error'] = 'El comentario que deseas editar no se encuentra disponible.';
         Request::redirect('/');
     }
     // Verifico el estado.
     if ($model_comentario->estado === 2) {
         $_SESSION['flash_error'] = 'El comentario que deseas editar no se encuentra disponible.';
         Request::redirect('/post/index/' . $model_comentario->post_id);
     }
     // Verifico permisos estado.
     if ($model_comentario->usuario_id !== Usuario::$usuario_id && !Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_EDITAR)) {
         $_SESSION['flash_error'] = 'No tienes los permisos para editar el comentario.';
         Request::redirect('/post/index/' . $model_comentario->post_id);
     }
     // Cargo la vista.
     $vista = View::factory('/post/editar_comentario');
     // Seteo información del comentario.
     $vista->assign('contenido', $model_comentario->contenido);
     $vista->assign('error_contenido', FALSE);
     $vista->assign('usuario', $model_comentario->usuario()->as_array());
     $vista->assign('post', $model_comentario->post()->as_array());
     $vista->assign('comentario', $model_comentario->as_array());
     if (Request::method() === 'POST') {
         // Cargo el comentario.
         $contenido = isset($_POST['contenido']) ? $_POST['contenido'] : '';
         // Seteo enviado.
         $vista->assign('contenido', $contenido);
         // Verificamos el formato.
         $comentario_clean = preg_replace('/\\[.*\\]/', '', $contenido);
         if (!isset($comentario_clean[20]) || isset($contenido[400])) {
             $vista->assign('error_contenido', 'El comentario debe tener entre 20 y 400 caracteres.');
         } else {
             // Transformamos entidades HTML.
             $contenido = htmlentities($contenido, ENT_NOQUOTES, 'UTF-8');
             // Insertamos el comentario.
             $model_comentario->actualizar_campo('contenido', $contenido);
             // Envio el suceso.
             $model_suceso = new Model_Suceso();
             if (Usuario::$usuario_id == $model_comentario->usuario_id) {
                 $model_suceso->crear(Usuario::$usuario_id, 'post_comentario_editar', FALSE, $comentario, Usuario::$usuario_id);
                 if (Usuario::$usuario_id != $model_comentario->post()->usuario_id) {
                     $model_suceso->crear($model_comentario->post()->usuario_id, 'post_comentario_editar', TRUE, $comentario, Usuario::$usuario_id);
                 }
             } else {
                 $model_suceso->crear($model_comentario->usuario_id, 'post_comentario_editar', TRUE, $comentario, Usuario::$usuario_id);
                 $model_suceso->crear(Usuario::$usuario_id, 'post_comentario_editar', FALSE, $comentario, Usuario::$usuario_id);
                 if (Usuario::$usuario_id == $model_comentario->post()->usuario_id) {
                     $model_suceso->crear($model_comentario->post()->usuario_id, 'post_comentario_editar', FALSE, $comentario, Usuario::$usuario_id);
                 }
             }
             $_SESSION['post_comentario_success'] = 'El comentario se ha actualizado correctamente.';
             Request::redirect('/post/index/' . $model_comentario->post_id);
         }
     }
     // Menu.
     $this->template->assign('master_bar', parent::base_menu('posts'));
     $this->template->assign('top_bar', Controller_Home::submenu());
     // Asignamos la vista.
     $this->template->assign('contenido', $vista->parse());
 }
Beispiel #5
0
 /**
  * Listado de comentarios que se encuentran desaprobados.
  * @param int $pagina Número de página a mostrar.
  * @param int $tipo Tipo de comentarios a mostrar.
  */
 public function action_comentarios($pagina, $tipo)
 {
     // Verifico permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_VER_DESAPROBADO)) {
         $_SESSION['flash_error'] = 'No tienes permiso para acceder a esa sección.';
         Request::redirect('/');
     }
     // Formato de la página.
     $pagina = (int) $pagina > 0 ? (int) $pagina : 1;
     // 0: Posts y fotos
     // 1: Fotos.
     // 2: Posts.
     // Verifico el tipo de comentarios a mostrar.
     if ($tipo == 0 || $tipo == 1 || $tipo == 2) {
         $tipo = (int) $tipo;
     } else {
         $tipo = 0;
     }
     // Cantidad de elementos por pagina.
     $cantidad_por_pagina = 20;
     // Cargamos la vista.
     $vista = View::factory('/moderar/desaprobado/comentarios');
     // Asignamos datos.
     $vista->assign('tipo', $tipo);
     // Cargo datos en función del tipo.
     if ($tipo === 0) {
         // Cargo el modelo.
         $model_comentario = new Model_Comentario();
         // Cargo el listado de comentarios.
         $lst = $model_comentario->listado($pagina, $cantidad_por_pagina, Model_Comentario::ESTADO_OCULTO);
         if (count($lst) == 0 && $pagina != 1) {
             Request::redirect('/moderar/desaprobado/comentarios');
         }
     } elseif ($tipo === 1) {
         // Cargo el modelo.
         $model_comentario = new Model_Foto_Comentario();
         // Cargo el listado de comentarios.
         $lst = $model_comentario->listado($pagina, $cantidad_por_pagina, Model_Foto_Comentario::ESTADO_OCULTO);
         if (count($lst) == 0 && $pagina != 1) {
             Request::redirect('/moderar/desaprobado/comentarios/1/1');
         }
     } else {
         // Cargo el modelo.
         $model_comentario = new Model_Post_Comentario();
         // Cargo el listado de comentarios.
         $lst = $model_comentario->listado($pagina, $cantidad_por_pagina, Model_Post_Comentario::ESTADO_OCULTO);
         if (count($lst) == 0 && $pagina != 1) {
             Request::redirect('/moderar/desaprobado/comentarios/1/2');
         }
     }
     // Calculo las cantidades.
     $c_foto = Model_Foto_Comentario::cantidad(Model_Foto_Comentario::ESTADO_OCULTO);
     $c_post = Model_Post_Comentario::cantidad(Model_Post_Comentario::ESTADO_OCULTO);
     $c_total = $c_foto + $c_post;
     // Paso datos para barra.
     $vista->assign('cantidad_fotos', $c_foto);
     $vista->assign('cantidad_posts', $c_post);
     $vista->assign('cantidad_total', $c_total);
     $vista->assign('actual', $pagina);
     // Paginación.
     $total = $tipo == 0 ? $c_total : ($tipo == 1 ? $c_foto : $c_post);
     $paginador = new Paginator($total, $cantidad_por_pagina);
     $vista->assign('paginacion', $paginador->get_view($pagina, '/moderar/desaprobado/comentario/%s/' . $tipo));
     // Obtenemos datos de los comentarios.
     foreach ($lst as $k => $v) {
         $a = $v->as_array();
         if ($v instanceof Model_Foto_Comentario) {
             $a['foto'] = $v->foto()->as_array();
         } else {
             $a['post'] = $v->post()->as_array();
         }
         $a['usuario'] = $v->usuario()->as_array();
         $lst[$k] = $a;
     }
     // Seteamos listado de comentarios.
     $vista->assign('comentarios', $lst);
     unset($lst);
     // Seteamos el menu.
     $this->template->assign('master_bar', parent::base_menu('moderar'));
     // Cargamos plantilla administracion.
     $admin_template = View::factory('moderar/template');
     $admin_template->assign('contenido', $vista->parse());
     unset($portada);
     $admin_template->assign('top_bar', Controller_Moderar_Home::submenu('desaprobado_comentarios'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }