/** * 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()); }
/** * 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'); }
/** * Seguimos a un usuario. * @param int $post ID del post que estamos viendo. * @param int $usuario ID del usuario a seguir. */ public function action_seguir_usuario($post, $usuario) { // Verifico estar logueado. if (!Usuario::is_login()) { $_SESSION['flash_error'] = 'Debes estar logueado para poder seguir usuarios.'; Request::redirect('/usuario/login'); } // Cargo el usuario. $usuario = (int) $usuario; $model_usuario = new Model_Usuario($usuario); // Verifico existencia. if (!$model_usuario->existe()) { $_SESSION['flash_error'] = 'El usuario al cual quieres seguir no se encuentra disponible.'; Request::redirect('/post/index/' . $post); } // Verificamos no sea uno mismo. if (Usuario::$usuario_id == $model_usuario->id) { $_SESSION['flash_error'] = 'El usuario al cual quieres seguir no se encuentra disponible.'; Request::redirect('/post/index/' . $post); } // Verifico el estado. if ($model_usuario->estado !== Model_Usuario::ESTADO_ACTIVA) { $_SESSION['flash_error'] = 'El usuario al cual quieres seguir no se encuentra disponible.'; Request::redirect('/post/index/' . $post); } // Verifico no sea seguidor. if ($model_usuario->es_seguidor(Usuario::$usuario_id)) { $_SESSION['flash_error'] = 'El usuario al cual quieres seguir no se encuentra disponible.'; Request::redirect('/post/index/' . $post); } // Sigo al usuario. $model_usuario->seguir(Usuario::$usuario_id); // Envio el suceso. $model_suceso = new Model_Suceso(); if ($model_usuario->id != Usuario::$usuario_id) { $model_suceso->crear($model_usuario->id, 'usuario_seguir', TRUE, $model_usuario->id, Usuario::$usuario_id); $model_suceso->crear(Usuario::$usuario_id, 'usuario_seguir', FALSE, $model_usuario->id, Usuario::$usuario_id); } else { $model_suceso->crear($model_usuario->id, 'usuario_seguir', TRUE, $model_usuario->id, Usuario::$usuario_id); } // Informo resultado. $_SESSION['flash_success'] = 'Comenzaste a seguir al usuario correctamente.'; Request::redirect('/post/index/' . $post); }
/** * Cambiamos el rango de un usuario. * @param int $usuario ID del usuario al que se le cambia el rango. * @param int $rango ID del rango a setear. */ public function action_cambiar_rango($usuario, $rango) { $usuario = (int) $usuario; // Verificamos no sea actual. if ($usuario == Usuario::$usuario_id) { $_SESSION['flash_error'] = 'El usuario que deseas cambiarle el rango no se encuentra disponible.'; Request::redirect('/admin/usuario/'); } // Cargamos el modelo del usuario. $model_usuario = new Model_Usuario($usuario); if (!$model_usuario->existe()) { $_SESSION['flash_error'] = 'El usuario que deseas cambiarle el rango no se encuentra disponible.'; Request::redirect('/admin/usuario/'); } // Verifico su orden. if ($model_usuario->rango()->es_superior(Usuario::usuario()->rango)) { $_SESSION['flash_error'] = 'El usuario que deseas cambiarle el rango no se encuentra disponible.'; Request::redirect('/admin/usuario/'); } $rango = (int) $rango; // Verifico el rango. $model_rango = new Model_Usuario_Rango($rango); if ($model_rango->existe()) { // Verifico el nivel. if ($rango == Usuario::usuario()->rango || $model_rango->es_superior(Usuario::usuario()->rango)) { $_SESSION['flash_error'] = 'Rango que deseas asignar no se encuentra disponible.'; Request::redirect('/admin/usuario/'); } // Actualizo el rango. $model_usuario->actualizar_campo('rango', $rango); // Envio el suceso. $model_suceso = new Model_Suceso(); if (Usuario::$usuario_id != $model_usuario->id) { $model_suceso->crear($model_usuario->id, 'usuario_cambio_rango', TRUE, $model_usuario->id, $rango, Usuario::$usuario_id); $model_suceso->crear(Usuario::$usuario_id, 'usuario_cambio_rango', FALSE, $model_usuario->id, $rango, Usuario::$usuario_id); } else { $model_suceso->crear($model_usuario->id, 'usuario_cambio_rango', FALSE, $model_usuario->id, $rango, Usuario::$usuario_id); } // Informo el resultado. $_SESSION['flash_success'] = 'El rango fue cambiado correctamente correctamente.'; Request::redirect('/admin/usuario'); } // Cargo la vista. $vista = View::factory('admin/usuario/cambiar_rango'); // Seteo la información. $vista->assign('usuario', $model_usuario->as_array()); // Cargamos los rangos. $lst = $model_rango->listado(Usuario::usuario()->rango()->orden); foreach ($lst as $k => $v) { $lst[$k] = $v->as_array(); } $vista->assign('rangos', $lst); // 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('usuario')); // Asignamos la vista a la plantilla base. $this->template->assign('contenido', $admin_template->parse()); }