Hoy es un día grande para Gesbit. De veras que sí, ha merecido la pena las más de dos o tres horas que he estado preparando lo que ahora comentaré. Espero no equivocarme... creo que ha quedado bien, o, cuando menos, mucho mejor de lo que estaba. Estoy hablando del filtro que lleva a cabo Gesbit en el cuerpo de entradas y comentarios de las bitácoras que gestiona.
En Gesbit se viene usando la biblioteca KSes para PHP, también usada en otros sistemas, que sirve para filtrar HTML indeseado. Pues bien, tengo que reconocer que venía haciéndolo de una forma un tanto chapucera. Literalmente, se añadían unos cuantos atributos válidos, para todas las etiquetas HTML utilizables, puesto que esto último es una opción más de Gesbit.
Los atributos tampoco correspondían a todas las etiquetas... ya digo, era una verdadera chapuza. Pensé en utilizar otro software, como comenté en esta entrada hace tiempo, pero, no llegué a ponerme con ello, porque lo consideraba demasiado complicado para el objetivo en cuestión: lo estimaba como ponerse a matar moscas a cañonazos.
Pero, hete aquí que hoy he cogido el toro por los cuernos. Me he armado de paciencia y, basándome en la documentación del sitio web W3schools, he preparado un archivo que declara una variable que contiene todas y cada una de las etiquetas del estándar XHTML 1.0, así como todos y cada uno de los atributos, estándars, opcionales y requeridos. Que me ha costado un huevo, vamos.
La variable en cuestión define los datos tal y como los necesita la biblioteca KSes que he mencionado. También, pero, en un "script" separado, se define alguna que otra etiqueta HTML, que se sale del estándar XHTML, pero, que, en un momento dado pueden ser necesarias, por motivos de compatibilidad entre navegadores.
Hecho lo anterior, sólo quedaba centrarme en el método "KSesFilter" de la clase "GbValidate" de Gesbit, de modo que hiciera uso de las variables y datos referidos. Ahora bien, ¿estoy diciendo que se permiten todas y cada una de las etiquetas XHTML en los cuerpos de entradas y comentarios? No; las etiquetas disponibles siguen siendo una opción de Gesbit, y se definen como tales.
En el método susomentado se comprueba si una determinada etiqueta, de entre el estándar XHTML y/o HTML compatible, quiere ser usada, es decir, se incluye en la correspondiente opción de Gesbit. Si es así, se añade la etiqueta de marras para que KSes la tenga en cuenta, con sus correspondientes atributos, no a barullo, sino los que le corresponden.
Por cierto, que, si usas la biblioteca KSes en tus proyectos, es posible que el archivo "xhtml10tags.php" que he añadido en Gesbit en "gb-auxilar/classes/kses/" pueda serte de utilidad, en el sentido de que no tendrás que repetir el mismo trabajo que he llevado a cabo yo. Porque este archivo no sólo sirve para Gesbit, sino que podría usarse con KSes en otros proyectos.
En definitiva, que estoy muy contento, porque, aunque no te lo creas, esa "chapuza" que era antes el método "FilterHtml" la tenía muy presente, y, cada vez que pasaba por ahí, se me iban los demonios, poco más o menos. En este sentido creo que he conseguido mejorar este asunto, y con ello también Gesbit, un poquito más.
