Beispiel #1
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 #2
0
 /**
  * Submenu de la moderación.
  * @param string $activo Sección actual.
  * @return array
  */
 public static function submenu($activo)
 {
     $listado = array();
     $listado['p_principal'] = array('caption' => 'Principal');
     $listado['index'] = array('link' => '/moderar/', 'caption' => 'Inicio', 'active' => FALSE);
     if (Usuario::permiso(array(Model_Usuario_Rango::PERMISO_POST_VER_DENUNCIAS, Model_Usuario_Rango::PERMISO_FOTO_VER_DENUNCIAS, Model_Usuario_Rango::PERMISO_USUARIO_VER_DENUNCIAS))) {
         $listado['p_denuncias'] = array('caption' => 'Denuncias');
         if (Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_VER_DENUNCIAS)) {
             $listado['denuncias_posts'] = array('link' => '/moderar/denuncias/posts/', 'caption' => 'Posts', 'active' => FALSE, 'cantidad' => Model_Post_Denuncia::cantidad(Model_Post_Denuncia::ESTADO_PENDIENTE));
         }
         if (Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VER_DENUNCIAS)) {
             $listado['denuncias_fotos'] = array('link' => '/moderar/denuncias/fotos/', 'caption' => 'Fotos', 'active' => FALSE, 'cantidad' => Model_Foto_Denuncia::cantidad(Model_Post_Denuncia::ESTADO_PENDIENTE));
         }
         if (Usuario::permiso(Model_Usuario_Rango::PERMISO_USUARIO_VER_DENUNCIAS)) {
             $listado['denuncias_usuarios'] = array('link' => '/moderar/denuncias/usuarios/', 'caption' => 'Usuarios', 'active' => FALSE, 'cantidad' => Model_Usuario_Denuncia::cantidad(Model_Post_Denuncia::ESTADO_PENDIENTE));
         }
     }
     $listado['p_gestion'] = array('caption' => 'Gestión');
     if (Usuario::permiso(Model_Usuario_Rango::PERMISO_USUARIO_SUSPENDER)) {
         $listado['gestion_usuarios'] = array('link' => '/moderar/gestion/usuarios/', 'caption' => 'Usuarios', 'active' => FALSE, 'cantidad' => Model_Usuario_Suspension::cantidad());
     }
     // $listado['gestion_buscador'] = array('link' => '/moderar/gestion/buscador/', 'caption' => 'Buscador contenido', 'active' => FALSE);
     if (Usuario::permiso(array(Model_Usuario_Rango::PERMISO_POST_VER_PAPELERA, Model_Usuario_Rango::PERMISO_FOTO_VER_PAPELERA))) {
         $listado['p_papelera'] = array('caption' => 'Papelera de reciclaje');
         if (Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_VER_PAPELERA)) {
             $listado['papelera_posts'] = array('link' => '/moderar/papelera/posts/', 'caption' => 'Posts eliminados', 'active' => FALSE, 'cantidad' => Model_Post::s_cantidad(Model_Post::ESTADO_PAPELERA));
         }
         if (Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VER_PAPELERA)) {
             $listado['papelera_fotos'] = array('link' => '/moderar/papelera/fotos/', 'caption' => 'Fotos eleminadas', 'active' => FALSE, 'cantidad' => Model_Foto::s_cantidad(Model_Foto::ESTADO_PAPELERA));
         }
     }
     if (Usuario::permiso(array(Model_Usuario_Rango::PERMISO_POST_VER_DESAPROBADO, Model_Usuario_Rango::PERMISO_COMENTARIO_VER_DESAPROBADO))) {
         $listado['p_desaprobado'] = array('caption' => 'Contenido desaprobado');
         if (Usuario::permiso(Model_Usuario_Rango::PERMISO_POST_VER_DESAPROBADO)) {
             $listado['desaprobado_posts'] = array('link' => '/moderar/desaprobado/posts', 'caption' => 'Posts', 'active' => FALSE, 'cantidad' => Model_Post::s_cantidad(Model_Post::ESTADO_PENDIENTE) + Model_Post::s_cantidad(Model_Post::ESTADO_RECHAZADO));
         }
         if (Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_VER_DESAPROBADO)) {
             $listado['desaprobado_comentarios'] = array('link' => '/moderar/desaprobado/comentarios/', 'caption' => 'Comentarios', 'active' => FALSE, 'cantidad' => Model_Comentario::cantidad(Model_Comentario::ESTADO_OCULTO));
         }
     }
     // Seteamos el color.
     foreach ($listado as $k => $v) {
         if (isset($v['cantidad'])) {
             if ($listado[$k]['cantidad'] > 0) {
                 $listado[$k]['tipo'] = 'important';
             } else {
                 $listado[$k]['tipo'] = 'success';
             }
         }
     }
     if (isset($listado[$activo])) {
         $listado[$activo]['active'] = TRUE;
     }
     return $listado;
 }
Beispiel #3
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());
 }