No iba a escribir este post, pero la frase "mucho más fácil y no hace falta una tabla de sobra" me hizo cambiar de opinión.
Mucho mas fácil? Si.
Mucho mejor? No.
Una tabla de sobra? No, no y no.
Tuve una razón (muy muy buena razón) para hacer el plugin de la manera en que lo hice: Optimización/rendimiento.
Funcionamiento de mi plugin:
- Crea un nuevo campo en la base de datos. Ponele que agregue 2 o 3 MBs de espacio máximo en un foro con miles de usuarios.
- Realiza 1 (una) consulta a la base de datos cuando el usuario crea o elimina un nuevo thread.
- No realiza ninguna consulta cuando estás viendo un thread, ya que MyBB obtiene el valor de la base de datos automaticamente.
Funcionamiento de tu plugin:
- No crea ningún campo en la base de datos. (Yeahhh!! Good for you!)
- No realiza ninguna consulta a la base de datos cuando el usuario crea o elimina un nuevo thread. (Yeahh!! Query avoided!)
- Cuando visitas un thread, realiza 1 (una) consulta a la base de datos por cada post que estés viendo. (Ouch! My bad...)
Pero eso no es todo, tu plugin no le ordena a la base de datos que cuente la cantidad de threads, si no que le ordena que extraiga todos y cada uno de los threads hechos por el usuario, y luego que los cuente.
Resultado:
En mi foro en localhost (donde el servidor tiene el 100% de los recursos disponibles), al ver un thread conteniendo 7 posts (todos hechos por el mismo usuario), los resultados son los siguientes:
Con tu plugin activado: 29
Con mi plugin activado: 22
Sin ningun plugin activado: 22
Screen de las consultas extra que hace tu plugin:
[Imagen: 2zsqgw8.jpg]
En un foro chico (MUY chico) y con un servidor decente (que no esté sobrevendido y bien configurado, con cache), no habría problemas.
Eso sí, en cuanto le agregas cientos/miles de visitas, el hosting te va a sacar a patadas :p
Las recomendaciones que te daría para el plugin:
- Utiliza la funcion COUNT de mysql.
- Crea un array global con la cantidad de threads hecho por el usuario X. Luego, antes de hacer la consulta a la base de datos, comprueba si ya la ha hecho anteriormente.
Aún así, con estas optimizaciones, el rendimiento en un foro mediano/grande no va a ser para nada bueno.
Ahora ya conoces las ventajas y desventajas que el método que estás utilizando tiene.
Suerte con el plugin
PD: Estuve 30 minutos escribiendo esto y.... bueno, tenía que salir hace 25 minutos. Adios!
Edit: Ups, parece que Edson posteo antes algo parecido. Luego lo leere, que ahora me tengo que ir.
Edit 2: Ufa, no me resistí a leer. Lo único que me queda para decir: Edson, mi código es libre, pero está liberado bajo la GPL. Recuerdalo...

Ahora si, chao!