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