/** * Configuramos parámetros del sistema. */ public function action_configuracion() { // Cargo la vista. $vista = View::factory('configuracion'); // Seteo el menu. $this->template->assign('steps', $this->steps(4)); // Cargamos las configuraciones. $model_configuracion = new Model_Configuracion(); // Datos por defecto. foreach (array('nombre', 'descripcion', 'usuario', 'email', 'password', 'cpassword') as $v) { $vista->assign($v, ''); $vista->assign('error_' . $v, FALSE); } if (Request::method() == 'POST') { // Cargo los valores. foreach (array('nombre', 'descripcion', 'usuario', 'email', 'password', 'cpassword') as $v) { ${$v} = isset($_POST[$v]) ? trim($_POST[$v]) : ''; } // Limpio los valores. $nombre = preg_replace('/\\s+/', ' ', $_POST['nombre']); $descripcion = preg_replace('/\\s+/', ' ', $_POST['descripcion']); // Seteo nuevos valores a las vistas. foreach (array('nombre', 'descripcion', 'usuario', 'email', 'password', 'cpassword') as $v) { $vista->assign($v, ${$v}); } $error = FALSE; // Verifico el nombre. if (!preg_match('/^[a-z0-9áéíóúñ !\\-_\\.]{2,20}$/iD', $nombre)) { $error = TRUE; $vista->assign('error_nombre', 'El nombre debe tener entre 2 y 20 caracteres. Pueden ser letras, números, espacios, !, -, _, . y \\'); } // Verifico el contenido. if (!preg_match('/^[a-z0-9áéíóúñ !\\-_\\.]{5,30}$/iD', $descripcion)) { $error = TRUE; $vista->assign('error_descripcion', 'La descripción debe tener entre 5 y 30 caracteres. Pueden ser letras, números, espacios, !, -, _, . y \\'); } // Verifico usuario. if (!preg_match('/^[a-zA-Z0-9]{4,16}$/D', $usuario)) { $error = TRUE; $vista->assign('error_usuario', 'El usuario debe tener entren 4 y 16 caracteres alphanumericos.'); } // Verifico email. if (!preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/D', $email)) { $error = TRUE; $vista->assign('error_usuario', 'El E-Mail ingresado no es válido.'); } // Verifico contraseña. if (!isset($password[6]) || isset($password[21])) { $error = TRUE; $vista->assign('error_password', 'La contraseña debe tener entre 6 y 20 caracteres.'); } // Verifico contraseña repetida válida. if ($password !== $cpassword) { $error = TRUE; $vista->assign('error_cpassword', 'Las contraseñas ingresadas no coinciden.'); } // Actualizo los valores. if (!$error) { // Actualizo las configuraciones. $model_configuracion->nombre = $nombre; $model_configuracion->descripcion = $descripcion; // Cargo modelo de usuarios. $model_usuario = new Model_Usuario(); // Verifico no exista la cuenta. if ($model_usuario->exists_nick($usuario)) { // Actualizo los datos. $model_usuario->load_by_nick($usuario); $model_usuario->actualizar_contrasena($password); $model_usuario->actualizar_campo('rango', 1); $model_usuario->actualizar_campo('estado', Model_Usuario::ESTADO_ACTIVA); $model_usuario->actualizar_campo('email', $email); } else { // Creo la cuenta. $model_usuario->register($usuario, $email, $password, 1); $model_usuario->load_by_nick($usuario); $model_usuario->actualizar_campo('estado', Model_Usuario::ESTADO_ACTIVA); } // Seteo el paso como terminado. if ($_SESSION['step'] < 4) { $_SESSION['step'] = 4; } // Redirecciono al siguiente. Request::redirect('/installer/finalizacion/'); } } // Seteo la vista. $this->template->assign('contenido', $vista->parse()); }
/** * 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()); }