Hola, estaba pensando en añadirle una funcionalidad a mi foro, y me gustaría q me diéseis vuestra opinión. No quiero implementaciones, simplemente ideas, ya me encargaré yo de escribirlas en php.
Bueno, al lío: quiero poner una cosa muy típica en los foros: q cuando un usuario registrado entre a cualquier foro, los mensajes q sean nuevos desde su última sesión, estén resaltados. Además tb quiero q si mientras navega por la web en esta sesión, si ve un thread, y luego sigue navegando por la web y de nuevo decide entrar en los foros y se ha escrito desde q vio el thread (en esta misma sesión) un mensaje nuevo en dicho thread, q tb se le resalte.
Espero haberme explicado bien, si no, preguntad
Aquí va mi idea de cómo se podía solucionar esto:
Para lo primero creo q bastaría con hacer en la tabla de usuarios un par de campos timestamp: uno q diga la última vez q visitó la web y otro con la última vez q imprimió una página en esta sesión. La forma de actualizar este último campo es sencilla: todas las páginas tienen un include y ahí pondré el código para q se actualice. Y para actualizar el de la última vez q visitó la página web (q no se refiere a esta sesión), eso lo pondría al hacer un login. En fin, resumiendo, q esta parte la tengo clara.
El lío viene con implementar la segunda parte. Había pensado en hacer una variable de sesión de tipo matriz, q tuviese dos columnas: una con los threads q está visitando en esta sesión, y la otra con un timestamp de la última vez q visitó dicho thread. Entonces a la hora de mostrar yo los threads, tendré q tener en cuenta dicha matriz y ver si el timestamp de la matriz del thread correspondiente es menor q el timestamp de la base de datos del último post de dicho thread, en cuyo caso resaltaré el post, puesto q significaría q han puesto un mensaje nuevo mientras q navegaba por la web en esta sesión.
Bueno, creo q me he enrollado mucho, pero no sé si esto será muy lioso. Yo pienso q esto debería funcionar, pero no sé si habrá formas mejores, y es lo q os quiero preguntar, si este problema se suele resolver así, o hay otras formas más eficientes/elegantes/comunes o lo q sea.
Muchas gracias, y un saludo.