Beispiel #1
0
 /**
  * Menu principal.
  * @param string $selected Clave seleccionada.
  * @return array
  */
 protected function base_menu($selected = NULL)
 {
     $data = array();
     // Listado de elementos ONLINE.
     if (Usuario::is_login()) {
         $data['inicio'] = array('link' => '/perfil/', 'caption' => 'Inicio', 'icon' => 'home', 'active' => FALSE);
     }
     // Listado de elemento OFFLINE.
     $data['posts'] = array('link' => '/', 'caption' => 'Posts', 'icon' => 'book', 'active' => FALSE);
     $data['fotos'] = array('link' => '/foto/', 'caption' => 'Fotos', 'icon' => 'picture', 'active' => FALSE);
     $data['tops'] = array('link' => '/tops/', 'caption' => 'TOPs', 'icon' => 'signal', 'active' => FALSE);
     // Listado elemento por permisos.
     if (Controller_Moderar_Home::permisos_acceso()) {
         $data['moderar'] = array('link' => '/moderar/', 'caption' => 'Moderación', 'icon' => 'eye-open', 'active' => FALSE);
     }
     if (Controller_Admin_Home::permisos_acceso()) {
         $data['admin'] = array('link' => '/admin/', 'caption' => 'Administración', 'icon' => 'certificate', 'active' => FALSE);
     }
     // Seleccionamos elemento.
     if ($selected !== NULL && isset($data[$selected])) {
         $data[$selected]['active'] = TRUE;
     } else {
         $data['posts']['active'] = TRUE;
     }
     return $data;
 }
Beispiel #2
0
 /**
  * Suspendemos a un usuario.
  * @param int $id ID del usuario a suspender.
  */
 public function action_suspender_usuario($id)
 {
     // Verifico permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_USUARIO_VER_DENUNCIAS)) {
         $_SESSION['flash_error'] = 'No tienes permiso para acceder a esa sección.';
         Request::redirect('/');
     }
     // Verificamos no sea actual.
     if ($id == Usuario::$usuario_id) {
         $_SESSION['flash_error'] = 'No puedes enviarte una advertencia a vos mismo.';
         Request::redirect('/moderar/denuncias/usuarios/');
     }
     // Aseguramos un ID entero.
     $id = (int) $id;
     // Cargamos el modelo del usuario.
     $model_usuario = new Model_Usuario($id);
     if (!$model_usuario->existe()) {
         $_SESSION['flash_error'] = 'El usuario que deseas suspender no se encuentra disponible.';
         Request::redirect('/moderar/denuncias/usuarios/');
     }
     // Verifico no esté suspendido.
     $s = $model_usuario->suspension();
     if ($s !== NULL) {
         if ($s->restante() <= 0) {
             $s->anular();
         } else {
             $_SESSION['flash_error'] = 'El usuario que deseas suspender no se encuentra disponible.';
             Request::redirect('/moderar/denuncias/usuarios/');
         }
     }
     unset($s);
     // Cargamos la vista.
     $vista = View::factory('/moderar/denuncias/suspender_usuario');
     // Información del usuario a suspender.
     $vista->assign('usuario', $model_usuario->as_array());
     // Valores por defecto y errores.
     $vista->assign('motivo', '');
     $vista->assign('error_motivo', FALSE);
     $vista->assign('fin', '');
     $vista->assign('error_fin', FALSE);
     if (Request::method() == 'POST') {
         // Seteamos sin error.
         $error = FALSE;
         // Obtenemos los campos.
         $motivo = isset($_POST['motivo']) ? $_POST['motivo'] : NULL;
         $fin = isset($_POST['fin']) ? $_POST['fin'] : NULL;
         // Valores para cambios.
         $vista->assign('motivo', $motivo);
         $vista->assign('fin', $fin);
         // Quitamos BBCode para dimenciones.
         $motivo_clean = preg_replace('/\\[([^\\[\\]]+)\\]/', '', $motivo);
         if (!isset($motivo_clean[10]) || isset($motivo_clean[200])) {
             $error = TRUE;
             $vista->assign('error_motivo', 'El motivo debe tener entre 10 y 200 caractéres');
         }
         unset($motivo_clean);
         // Verificamos la fecha.
         if (empty($fin)) {
             $error = TRUE;
             $vista->assign('error_fin', 'La fecha de finalización no es correcta.');
         } else {
             $fin = strtotime($fin);
             if ($fin <= time()) {
                 $error = TRUE;
                 $vista->assign('error_fin', 'La fecha de finalización no es correcta.');
             }
         }
         if (!$error) {
             // Evitamos XSS.
             $motivo = htmlentities($motivo, ENT_NOQUOTES, 'UTF-8');
             // Creamos la suspensión.
             $model_suspension = new Model_Usuario_Suspension();
             $s_id = $model_suspension->nueva($id, Usuario::$usuario_id, $motivo, $fin);
             // Enviamos el suceso.
             $model_suceso = new Model_Suceso();
             if (Usuario::$usuario_id != $id) {
                 $model_suceso->crear($id, 'usuario_suspender', TRUE, $s_id);
                 $model_suceso->crear(Usuario::$usuario_id, 'usuario_suspender', FALSE, $s_id);
             } else {
                 $model_suceso->crear($id, 'usuario_suspender', FALSE, $s_id);
             }
             // Seteamos mensaje flash y volvemos.
             $_SESSION['flash_success'] = 'Usuario suspendido correctamente.';
             Request::redirect('/moderar/denuncias/usuarios/');
         }
     }
     // 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('denuncias_usuarios'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }
Beispiel #3
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());
 }
Beispiel #4
0
 /**
  * Listado de suspensiones a usuarios.
  * @param int $pagina Número de página a mostrar.
  */
 public function action_usuarios($pagina)
 {
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_USUARIO_SUSPENDER)) {
         $_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;
     // Cantidad de elementos por pagina.
     $model_configuracion = new Model_Configuracion();
     $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20);
     // Cargamos la vista.
     $vista = View::factory('moderar/gestion/usuarios');
     // Modelo de suspensiones.
     $model_suspension = new Model_Usuario_Suspension();
     // Limpio antiguos.
     Model_Usuario_Suspension::clean();
     // Cargamos el listado de posts.
     $lst = $model_suspension->listado($pagina, $cantidad_por_pagina);
     if (count($lst) == 0 && $pagina != 1) {
         Request::redirect('/moderar/gestion/usuarios');
     }
     // Paginación.
     $total = Model_Usuario_Suspension::cantidad();
     $vista->assign('cantidad_pendientes', $total);
     $paginador = new Paginator($total, $cantidad_por_pagina);
     $vista->assign('paginacion', $paginador->get_view($pagina, '/moderar/gestion/usuarios/%s/'));
     unset($total);
     // Obtenemos datos de las denuncias.
     foreach ($lst as $k => $v) {
         $a = $v->as_array();
         $a['motivo'] = Decoda::procesar($a['motivo']);
         $a['usuario'] = $v->usuario()->as_array();
         $a['moderador'] = $v->moderador()->as_array();
         $lst[$k] = $a;
     }
     // Seteamos listado de suspensiones.
     $vista->assign('suspensiones', $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('gestion_usuarios'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }
Beispiel #5
0
 /**
  * Listado de fotos que se encuentran en la papelera.
  * @param int $pagina Número de página a mostrar.
  */
 public function action_fotos($pagina)
 {
     // Verifico permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VER_PAPELERA)) {
         $_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;
     // Cantidad de elementos por pagina.
     $model_configuracion = new Model_Configuracion();
     $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20);
     // Cargamos la vista.
     $vista = View::factory('/moderar/papelera/fotos');
     // Modelo de fotos.
     $model_foto = new Model_Foto();
     // Cargamos el listado de posts.
     $lst = $model_foto->listado($pagina, $cantidad_por_pagina, Model_Foto::ESTADO_PAPELERA);
     if (count($lst) == 0 && $pagina != 1) {
         Request::redirect('/moderar/papelera/fotos');
     }
     // Paginación.
     $paginador = new Paginator(Model_Foto::s_cantidad(Model_Foto::ESTADO_PAPELERA), $cantidad_por_pagina);
     $vista->assign('paginacion', $paginador->get_view($pagina, '/moderar/papelera/fotos/%s/'));
     // Obtenemos datos de los posts.
     foreach ($lst as $k => $v) {
         $a = $v->as_array();
         $a['usuario'] = $v->usuario()->as_array();
         $lst[$k] = $a;
     }
     // Seteamos listado de fotos.
     $vista->assign('fotos', $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('papelera_fotos'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }