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