Exemple #1
0
 /**
  * Editamos el rango.
  * @param int $id ID del rango a editar.
  */
 public function action_editar_rango($id)
 {
     $id = (int) $id;
     // Cargamos el modelo del rango.
     $model_rango = new Model_Usuario_Rango($id);
     if (!$model_rango->existe()) {
         Request::redirect('/admin/usuario/rangos');
     }
     // Cargamos la vista.
     $vista = View::factory('admin/usuario/editar_rango');
     // Cargamos el listado de imagens para rangos disponibles.
     $imagenes_rangos = scandir(VIEW_PATH . THEME . DS . 'assets' . DS . 'img' . DS . 'rangos' . DS);
     unset($imagenes_rangos[1], $imagenes_rangos[0]);
     // Quitamos . y ..
     $vista->assign('imagenes_rangos', $imagenes_rangos);
     // Valores por defecto y errores.
     $vista->assign('nombre', $model_rango->nombre);
     $vista->assign('error_nombre', FALSE);
     $vista->assign('color', strtoupper(sprintf('%06s', dechex($model_rango->color))));
     $vista->assign('error_color', FALSE);
     $vista->assign('imagen', $model_rango->imagen);
     $vista->assign('error_imagen', FALSE);
     if (Request::method() == 'POST') {
         // Seteamos sin error.
         $error = FALSE;
         // Obtenemos los campos.
         $nombre = isset($_POST['nombre']) ? preg_replace('/\\s+/', ' ', trim($_POST['nombre'])) : NULL;
         $color = isset($_POST['color']) ? $_POST['color'] : NULL;
         $imagen = isset($_POST['imagen']) ? $_POST['imagen'] : NULL;
         // Valores para cambios.
         $vista->assign('nombre', $nombre);
         $vista->assign('color', $color);
         $vista->assign('imagen', $imagen);
         // Verificamos el nombre.
         if (!preg_match('/^[a-z0-9\\sáéíóúñ]{5,32}$/iD', $nombre)) {
             $error = TRUE;
             $vista->assign('error_nombre', 'El nombre del rango deben ser entre 5 y 32 caractéres alphanuméricos.');
         }
         // Verificamos el color.
         if (!preg_match('/^[0-9a-f]{6}$/Di', $color)) {
             $error = TRUE;
             $vista->assign('error_color', 'El color debe ser HEXADECIMAL de 6 digitos. Por ejemplo: 00FF00.');
         }
         // Verificamos la imagen.
         if (!in_array($imagen, $imagenes_rangos)) {
             $error = TRUE;
             $vista->assign('error_imagen', 'No ha seleccionado una imagen válida.');
         }
         if (!$error) {
             // Convertimos el color a entero.
             $color = hexdec($color);
             // Actualizo el color.
             if ($model_rango->color != $color) {
                 $model_rango->cambiar_color($color);
             }
             // Actualizo el imagen.
             if ($model_rango->imagen != $imagen) {
                 $model_rango->cambiar_imagen($imagen);
             }
             // Actualizo el nombre.
             if ($model_rango->nombre != $nombre) {
                 $model_rango->renombrar($nombre);
             }
             // Informamos suceso.
             $vista->assign('success', 'Información actualizada correctamente');
         }
     }
     // Seteamos el menu.
     $this->template->assign('master_bar', parent::base_menu('admin'));
     // 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_rangos'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }