/** * 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()); }
/** * 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()); }
/** * 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()); }
/** * 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()); }
/** * 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()); }