Supongo que no habrá nadie aún utilizando Gesbit, ni sus plugins, por lo tanto, pero, creo que debo informar de un error grave que he descubierto en el plugin GbDefensio, y que ya he solucionado. Es lo que tienen este tipo de plugins que tratan con la base de datos de Gesbit, que hay que prestar mucha atención a lo que se lleva a cabo: se ve que no lo hice así, y menos mal que me he dado cuenta del problema sin que llegara más lejos.
¿De qué estoy hablando y por qué lo considero un error grave? No es que se trate de un error que no tuviera reparación posible, pero, el caso es que el plugin GbDefensio, cuando marcaba un comentario como SPAM, no decrementaba el número de comentarios en la entrada correspondiente. Y esto conducía al problema de que el número de comentarios que podían indicarse en una entrada, no correspondía con los que el usuario podía ver, realmente.
¿Qué ha pasado? Ha pasado que los comentarios SPAM no cuentan, como es natural. Cuando desde Gesbit, desde su panel de administración, marcas un comentario como SPAM, este no se borra, pero, sí que causa el decremento del contador de comentarios en la entrada a la que pertenezca dicho comentario. Pues bien, GbDefensio no estaba llevando esto a cabo, siendo tarea suya hacerlo, puesto que es el plugin el que marca como SPAM un determinado comentario.
Quiere decirse que Gesbit, por principio, no marca como SPAM los comentarios, siendo el usuario quien tiene que encargarse de esto, si es que aparece algún "spammer" en la bitácora. Ahora bien, GbDefensio es, precisamente, un filtro automático, basado en el servicio web de Defensio, que sí que es capaz de determinar automáticamente si un comentario es SPAM o no. Entonces, si determina que un comentario es SPAM, debe también decrementar la cuenta de comentarios en la entrada correspondiente, porque esa es la regla.
Los comentarios en Gesbit pueden estar aprobados o no, y, pueden ser de varios tipos. Un comentario, sin embargo, aprobado o no, incrementa la cuenta de comentarios de una determinada entrada. Sin embargo, los comentarios que se marquen como SPAM, no cuentan, simplemente. No se muestran a los lectores de la bitácora, y tampoco cuentan como comentarios de una entrada, a no ser que vuelva a marcarse como "normal" o "trackback". Gesbit hace bien su trabajo, y GbDefensio también, salvo que se le olvidaba decrementar la cuenta de comentarios de la entrada.
¡Tampoco es para tanto! Podrías decir. Y sí, lo cierto es que no es un error gravísimo, pero, sí que lo considero grave, porque, el uso continuado del plugin (sin actualizar, es decir, con el problema sin resolver) haría inconsistente la cuenta de los comentarios de las entradas. El problema no iría más allá, en principio (porque nunca se sabe...) pero, el usuario vería que una entrada tiene tres comentarios, y cuando eche un vistazo no verá sino dos, por ejemplo, si uno de ellos hubiera sido marcado como SPAM por GbDefensio.
El caso es que ya he actualizado el plugin para que tenga en cuenta lo que he dicho, y ahora, en caso de detectar que un comentario es SPAM, decrementa la cuenta de comentarios de la entrada correspondiente, manteniendo correcta la consistencia de la base de datos. Así que ya lo sabes. No es que se acabe el mundo, pero, desde luego, era algo que no podía dejarse tal como estaba. Y veré de prestar más atención a este tipo de cosas, puesto que una de las cuestiones que más me preocupa en Gesbit es su base de datos, y cómo pueda verse afectada por el uso de plugins.
Actualización: Al hilo de esta entrada, he revisado de nuevo el plugin, de forma que ahora hace uso de cierto método de la clase GbDb de Gesbit, que se encarga de decrementar la cuenta de comentarios de una entrada si es necesario. De este modo la implementación de cierto método (que actualiza los comentarios) del plugin queda mejor, en mi opinión, pues el plugin "delega" en Gesbit el decrementar la cuenta de comentarios de una entrada, si el tipo del comentario es "SPAM". En fin, el problema estaba solucionado, pero, ahora pareciera que con una mejor solución.
Hola!
Según entiendo por lo que escribes, la tabla de entradas tiene un columna para el número de comentarios, lo cual significa que, en un momento dado y por algún error, claro, podría darse el caso de que no coincidan el número real de comentarios con el indicado en la tabla. Suponiendo que sea así como yo digo, que no se si ya es mucho suponer, ¿no sería mejor prescindir de dicha columna y calcular el nº de comentarios 'al vuelo' en el sql correspondiente?
Yo lo hago así en un sistema de comentarios que tengo casi terminado, es decir, cuando voy a mostrar los comentarios lo primero que hago es un SELECT count(id_comment) AS num_comments FROM tb_comments WHERE ..., y asi me entero del número de comentarios al tiempo que dicha cantidad me sirve para hacer la paginación, si hiciera falta.
Supongo que alguna ventaja debe tener el guardar dicho número en una columna de la tabla de entradas, tal vez para alguna lista de "entradas mas comentadas" o algo así, supongo.
Ah, y ya que estamos, aprovecho para preguntar: Estuve leyendo eso de los trackback, incluso leí que cosa era en la wikipedia, pero no se si me pasa como a ese al que los arboles no le dejaban ver el bosque (¿o era el bosque el que no le dejaba ver los arboles?), o que yo no alcanzo a entender estas moderneces de la WEB 2.0, el caso es que lo leí, pero sigo sin entender que leches es un trackback. Y como veo que hablas de comentarios 'tipo trackback', pues esa es mi pregunta: cuando te llega un comentario, ¿como sabes que es un trackback? aúnque, en realidad lo que debería preguntar es ¿que coño es un tracback? :)
Es que se me ha antojado ponerle trackback de esos al módulo de noticias de mi engendro (aún no tiene nombre) y me resulta paradojico el querer ponerle algo que no se ni para que sirve. XDD
un saludo! Y la recomendación cinefila del día: El placer de los extraños
¡Hola Julián!
Sobre lo de los comentarios, pienso que de alguna forma es bueno llevar un marcador. Yo veo bien como atributo de una entrada el número de comentarios que esta tenga, aunque no debo dejar de reconocer que no soy ningún experto en bases de datos. A partir de ahí, decrementar e incrementar no significa problema alguno: salvo si se te olvida... como me pasó con el plugin GbDefensio.
No obstante, la última solución queda hasta más elegante, me atrevería a decir, puesto que es Gesbit, internamente, quien decrementa o incrementa el campo correspondiente, dependiendo del tipo del comentario a actualizar. Lo cierto es que el método público conque cuenta la clase GbDb para actualizar el tipo de los comentarios existía antes que GbDefensio... y este debería haberlo usado desde un principio.
Respecto de los "Trackbacks", primero, voy a remitirte a la wikipedia, donde se nombra a los creadores del invento, que no son otros que los desarrolladores de la empresa SixApart, que llevan a cabo el CMS Movable Type. Estas mismas personas son las que mantienen la especificación de los Trackbacks. Existen implementaciones para no pocos lenguajes, su uso es relativamente sencillo, ¡Gesbit cuenta con una clase "Trackback"!
Ahora bien, ¿para qué sirven los "Trackbacks"? Te lo explicaré a mi modo... que no sé si será el más correcto o qué. En todo caso tú puedes buscar más información en los enlaces que he puesto arriba, y tratar de informarte mejor. Un "trackback" se resume en una notificación que, a través del protocolo HTTP, envía un sitio web, a otro sitio web. Casi todos los CMS (a partir de su invento) incorporan un sistema de "Trackbacks".
Tú estás leyendo una bitácora, por ejemplo, esta mismo, esta misma entrada. Tú tienes tu propia bitácora, y, quieres hacer referencia a esta en una nueva entrada que piensas escribir en tu bitácora. Para ello puedes utilizar la "URL para Trackbacks" de esta entrada, que, en el caso de Gesbit, siempre es una cosa así:
http://www.bitacora.com/enlace-a-la-entrada/trackback/
Cuando te dispongas a escribir tu nueva entrada, si el sistema de gestión de contenidos que estás usando contempla los "Trackbacks", tendrás en el formulario de marras una casilla, donde podrás indicar las URLs a las que quieres hacer "Trackbacks", porque pueden ser más de una. Ahí copias la URL anterior, por ejemplo, y, publicas la nueva entrada como si tal cosa.
Tu gestor de contenidos enviará a Gesbit (en este caso) una petición HTTP POST determinada, que sigue la especificación de los "Trackbacks", es decir, que proporciona a Gesbit los datos del "Trackback", y, Gesbit, actúa en consecuencia. En este caso se trata de añadir un nuevo comentario de tipo "Trackback" a la entrada que sea. Me parece que esto podría variar, pudiera ser que no todo el mundo tomara los "Trackbacks" como comentarios, pero, en los gestores de bitácoras este suele ser el caso.
El caso es que un comentario tuyo aparecería en la entrada en cuestión, sin que tú hayas tenido que publicarlo personalmente. Dicho comentario suele tener como "autor" el nombre de tu bitácora (es lo que envía tu bitácora entre los datos del "Trackback") y una URL, que es la de la entrada que tú has publicado en tu bitácora, y parte del contenido de tu entrada. Todo esto forma parte del comentario que Gesbit añade a la entrada, comentario de tipo "trackback".
Y creo que lo voy a dejar aquí, por miedo a liarlo más de la cuenta, y es que creo que hasta he dicho demasiado: realmente creo que al llegar aquí ya tienes medio claro lo que es un "Trackback" y para qué se usan. Lo demás (o lo de menos) puedes averiguarlo tú mismo, y será mejor que lo que yo pueda explicarte, que ya ves que me lío y te lío demasiado. ¿Cómo lo ves?
Ah... se me olvidaba... gracias por la recomendación cinéfila. No he visto aún la película que tú y yo sabemos, pero, es que quiero hacerle el hueco que acaso se merezca. Buscaré información sobre esta que me recomiendas ahora y lo más probable es que me haga con ella y la vea, aunque sólo sea porque tú me la recomiendas, Julián. ;)
Jau!
Pues con lo que me dices ya tengo (casi) perfectamente claro lo que es y para que sirve un trackback. El problema que tenía yo, o tengo, es que los documentos que he leido sobre el tema dan por sentado que uno ya conoce o esta familiarizado con ciertos terminos, conceptos o técnicas, y eso en mi caso no es así, pues lo cierto es que no dispongo de tiempo para mantenerme al día en todos estos temas. Digamos que mi velocidad de asimilación es mas lenta que la velocidad a la que avanzan estas cosas, sobre todo esto de la gueb-dos-cero-y-semantica. Ademas, lo cierto es cada vez me preocupa menos el hecho de saber menos sobre estas cosas.
Bueno, pues muchisimas gracias por la estupenda explicación, y en cuanto tenga lista la implementación de los trackback ya se a quien enviarle alguno, :)
Un saludo!
PD.: Sobre la pelicula, te destaco su música y su tremendo final y lleva cuidado con los spoilers que hay por ahí que te la destripan. Por cierto, hablando de spoilers ¿estas registrao en filmaffinity?
Je je je... No; no estoy registrado en FilmAffinity, aunque, de hecho es una de las páginas web que mejor me vienen, pues suelo buscar ahí las críticas y opiniones de la gente a veces para decidir si veo o no una determinada película. ¿Pero por qué lo dices? ;)
Te lo preguntaba para mirar tus votaciones. Por cierto, te aconsejo que te registres, y asi puedes aprovecharte del sistema ese que tienen de "almas gemelas", que funciona casi perfectamente y que, por lo menos a mi, me ha permitido encontrar verdaderas joyas. Yo estoy registrado como Nailuj2000.
Un saludo!
Sí; definitivamente, creo que es hora de que me registre en FilmAffinity. Lo haré Julián, y veremos qué tal. ;)