コード例 #1
0
ファイル: controller.php プロジェクト: 4bs4/marifa
 /**
  * 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());
 }