예제 #1
0
파일: usuario.php 프로젝트: 4bs4/marifa
 /**
  * Inicio de sessión de un usuario.
  */
 public function action_login()
 {
     // Verificamos si el usuario está conectado.
     if (Usuario::is_login()) {
         // Lo enviamos al perfil.
         Request::redirect('/', FALSE, TRUE);
     }
     // Asignamos el título.
     $this->template->assign('title', 'Inicio de Sessión');
     // Cargamos la vista del usuario.
     $view_usuario = View::factory('usuario/login');
     $view_usuario->assign('error', NULL);
     $view_usuario->assign('error_nick', FALSE);
     $view_usuario->assign('error_password', FALSE);
     $view_usuario->assign('nick', '');
     // Verificamos si se han enviado los datos.
     if (Request::method() == 'POST') {
         // Verificamos los datos enviados.
         // Verificamos estén ambos datos.
         if (!isset($_POST['nick']) || empty($_POST['nick']) || !isset($_POST['password']) || empty($_POST['password'])) {
             $view_usuario->assign('error', 'Debe introducir el E-Mail o Usuario y la contraseña para poder acceder.');
             $view_usuario->assign('error_nick', !(isset($_POST['nick']) && !empty($_POST['nick'])));
             $view_usuario->assign('error_password', !(isset($_POST['password']) && !empty($_POST['password'])));
             $view_usuario->assign('nick', isset($_POST['nick']) ? $_POST['nick'] : '');
         } else {
             // Obtenemos los datos.
             $nick = $_POST['nick'];
             $password = $_POST['password'];
             // Realizamos el login.
             $model_usuario = new Model_Usuario();
             $rst = $model_usuario->login($nick, $password);
             switch ($rst) {
                 case -1:
                     // Datos inválidos.
                     $view_usuario->assign('error', 'Los datos introducidos son inválidos.');
                     $view_usuario->assign('error_nick', TRUE);
                     $view_usuario->assign('error_password', TRUE);
                     break;
                 case Model_Usuario::ESTADO_ACTIVA:
                     // Cuenta activa.
                     $_SESSION['flash_success'] = 'Bienvenido.';
                     Request::redirect('/', FALSE, TRUE);
                     break;
                 case Model_Usuario::ESTADO_PENDIENTE:
                     // Cuenta por activar.
                     $view_usuario->assign('error', 'La cuenta no ha sido validada a&uacute;n. Si no recibiste el correo de activación haz click <a href="/usuario/pedir_activacion/">aqui</a>');
                     break;
                 case Model_Usuario::ESTADO_SUSPENDIDA:
                     // Cuenta suspendida.
                     // Obtenemos la suspensión.
                     $suspension = $model_usuario->suspension();
                     // Obtengo información para formar mensaje.
                     $motivo = Decoda::procesar($suspension->motivo);
                     $moderador = $suspension->moderador()->as_array();
                     $seconds = $suspension->restante();
                     // Tiempo restante
                     $restante = sprintf("%d:%02d:%02d", floor($seconds / 3600), floor($seconds % 3600 / 60), $seconds % 60);
                     unset($seconds);
                     $view_usuario->assign('error', sprintf(__('%s te ha suspendido por %s debido a:<br /> %s', FALSE), $moderador['nick'], $restante, $motivo));
                     break;
                 case Model_Usuario::ESTADO_BANEADA:
                     // Cuenta baneada.
                     $baneo = $model_usuario->baneo();
                     $view_usuario->assign('error', sprintf(__('%s te ha baneado el %s debido a: <br /> %s', FALSE), $baneo->moderador()->nick, $baneo->fecha->format('d/m/Y H:i:s'), Decoda::procesar($baneo->razon)));
             }
             $view_usuario->assign('nick', $nick);
         }
     } else {
         $view_usuario->assign('nick', '');
     }
     // Agregamos el la vista a la plantilla.
     $this->template->assign('contenido', $view_usuario->parse());
 }
예제 #2
0
파일: gestion.php 프로젝트: 4bs4/marifa
 /**
  * Terminamos la suspensión de un usuario.
  * @param int $usuario ID del usuario a quitar la suspensión.
  */
 public function action_terminar_suspension($usuario)
 {
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_USUARIO_SUSPENDER)) {
         $_SESSION['flash_error'] = 'No tienes permiso para acceder a esa sección.';
         Request::redirect('/');
     }
     // Valido el ID.
     $usuario = (int) $usuario;
     // Verifico que exista el usuario.
     $model_usuario = new Model_Usuario($usuario);
     if (!$model_usuario->existe()) {
         $_SESSION['flash_error'] = 'El usuario del que desea terminar la suspención no se encuentra disponible.';
         Request::redirect('/moderar/gestion/usuarios');
     }
     // Verifico el estado.
     if ($model_usuario->estado !== Model_Usuario::ESTADO_SUSPENDIDA) {
         $_SESSION['flash_error'] = 'El usuario del que desea terminar la suspención no se encuentra disponible.';
         Request::redirect('/moderar/gestion/usuarios');
     }
     // Borramos la suspensión.
     $model_usuario->suspension()->anular();
     // Creamos el suceso.
     $model_suceso = new Model_Suceso();
     if (Usuario::$usuario_id != $model_usuario->id) {
         $model_suceso->crear($model_usuario->id, 'usuario_fin_suspension', TRUE, $model_usuario->id, Usuario::$usuario_id);
         $model_suceso->crear(Usuario::$usuario_id, 'usuario_fin_suspension', FALSE, $model_usuario->id, Usuario::$usuario_id);
     } else {
         $model_suceso->crear($model_usuario->id, 'usuario_fin_suspension', FALSE, $model_usuario->id, Usuario::$usuario_id);
     }
     // Informamos el resultado.
     $_SESSION['flash_success'] = 'Suspensión anulada correctamente.';
     Request::redirect('/moderar/gestion/usuarios');
 }
예제 #3
0
파일: denuncias.php 프로젝트: 4bs4/marifa
 /**
  * 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());
 }
예제 #4
0
파일: usuario.php 프로젝트: 4bs4/marifa
 /**
  * Quitamos la suspensión de un usuario.
  * @param int $id ID del usuario a quitar la suspensión.
  */
 public function action_quitar_suspension_usuario($id)
 {
     $id = (int) $id;
     // Verificamos no sea actual.
     if ($id == Usuario::$usuario_id) {
         $_SESSION['flash_error'] = 'El usuario al que quieres quitar la suspensión no se encuentra disponible.';
         Request::redirect('/admin/usuario/');
     }
     // Cargamos el modelo del usuario.
     $model_usuario = new Model_Usuario($id);
     if (!$model_usuario->existe()) {
         $_SESSION['flash_error'] = 'El usuario al que quieres quitar la suspensión no se encuentra disponible.';
         Request::redirect('/admin/usuario/');
     }
     // Verificamos esté suspendido.
     $suspension = $model_usuario->suspension();
     if ($suspension === NULL) {
         // Verifico el estado.
         if ($model_usuario->estado === Model_Usuario::ESTADO_SUSPENDIDA) {
             // Actualizamos el estado.
             $model_usuario->actualizar_estado(Model_Usuario::ESTADO_ACTIVA);
         }
     } else {
         // Anulamos la suspensión.
         $suspension->anular();
         // Actualizamos el estado.
         $model_usuario->actualizar_estado(Model_Usuario::ESTADO_ACTIVA);
         // Envio el suceso.
         $model_suceso = new Model_Suceso();
         if (Usuario::$usuario_id != $id) {
             $model_suceso->crear($id, 'usuario_fin_suspension', TRUE, $suspension->id, $suspension->restante() > 0 ? Usuario::$usuario_id : NULL);
             $model_suceso->crear(Usuario::$usuario_id, 'usuario_fin_suspension', FALSE, $suspension->id, $suspension->restante() > 0 ? Usuario::$usuario_id : NULL);
         } else {
             $model_suceso->crear($id, 'usuario_fin_suspension', FALSE, $suspension->id, $suspension->restante() > 0 ? Usuario::$usuario_id : NULL);
         }
     }
     // Informo el resultado.
     $_SESSION['flash_success'] = 'Suspensión anulada correctamente.';
     Request::redirect('/admin/usuario');
 }