/** * 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()); }