Como nota aclaratoria este tutorial debería funcionar en cualquier entorno pero me voy a centrar en el proporcionado por ETECSA para eso.
Requisitos: Phpmyadmin y una instalación de Xenforo a la que se le quiera hacer un mantenimiento (limpiar los perfiles, reacciones y conversaciones para liberar espacio) .
1- Logearse en el phpmyadmin y buscar la Base de Datos correspondiente, en este caso tendrá de nombre bd_alterego.
2- El primer paso y pienso yo que es el más importante es el de limpiar las reacciones para que no aparezcan una vez borremos todo el contenido.
Una breve explicación de como se almacenan las reacciones en xenforo 2:
Todas las reacciones se guardan en una tabla llamada : xf_reaction_content , esta tabla tiene varias columnas , entre las que se encuentran:
content_type que indica el tipo de contenido al que se está reaccionando, este puede ser:
post : mensaje en un tema , esta nos interesa preservar
profile_post: a un estado que haya publicado el usuario en su perfil
profile_post_comment: a algún comentario en los perfiles
conversation_message: a las conversaciones privadas
reaction_id: que almacena la reacción que el usuario le dio al contenido , por ejemplo el usuario reaccionó con la id 1 (Like) a un profile_post , osea que le dio un like al estado.
Una vez explicado esto el metodo más efectivo para limpiar esa información que pude encontrar es hacer que las reacciones que vayamos a quitar tengan un valor 0 , para que así no afecte a la hora de borrarse.
4- En el Phpmyadmin luego de haber seleccionado la base de datos vamos al apartado SQL y escribimos los siguientes comandos:
UPDATE `xf_reaction_content` SET `reaction_id` = 0 WHERE `content_type` = 'profile_post'Este comando hará que todos los mensajes de perfil tengan la reacción 0 , que no existe, por lo tanto no tendrán (cabe destacar que aún se sigue mostrando porque hace falta reconstruir eso)
5- Lo mismo que el comando anterior pero esta vez para los comentarios a los estados
UPDATE `xf_reaction_content` SET `reaction_id` = 0 WHERE `content_type` = 'profile_post_comment'6- Este limpia todas las reacciones en las conversaciones privadas.
UPDATE `xf_reaction_content` SET `reaction_id` = 0 WHERE `content_type` = 'conversation_message'Listo :) , ya hemos dado valor cero a las reacciones prescindibles , ahora es tiempo de eliminarlas porque queremos tener de nuevo ese espacio para nosotros.
7- y eso se hace con este simple comando:
DELETE FROM xf_reaction_content WHERE reaction_id = '0'¿Que hace este? pues elimina todas las reacciones que tengan valor 0 , que son las que previamente hemos marcado en los pasos anteriores)
la base de datos se llevaba unos 6.4 MiB a la hora de hacer esta ¨purga¨ y una vez corrido el paso numero 7 se redujo a 4.8 , y mientras más usuarios y conversaciones se tenga más se puede limpiar (aunque la finalidad de esto es evitar el ¨like fantasma¨)
Ahora es totalmente seguro limpiar las conversaciones privadas que se encuentran alojadas en las siguientes tablas:
xf_conversation_master
xf_conversation_message
xf_conversation_recipient
xf_conversation_user
hay que ejecutar estos comandos en el apartado SQL de nuevo en el orden siguiente:
TRUNCATE xf_conversation_masterTRUNCATE xf_conversation_messageTRUNCATE xf_conversation_recipientTRUNCATE xf_conversation_userUna vez que todos corrieron satisfactoriamente todas las conversaciones privadas quedarán limpias
Como nota añadir que el comando TRUNCATE limpia todo el contenido de la base de datos pero sin eliminarla, por eso es mejor que DROP que DEFINITIVAMENTE no se debe usar para estos casos
Ahora es el turno de limpiar los perfiles, en este caso solo son dos tablas, las siguientes:
TRUNCATE xf_profile_post TRUNCATE xf_profile_post_commenty listo, se borran los perfiles completamente :D
podemos limpiar otras tablas con TRUNCATE como son:
xf_news_feed
xf_search_index
xf_user_alert (PARA ELIMINAR LAS ALERTAS, OBLIGATORIO)
xf_moderator_log (elimina el log de moderación)
las dos primeras se volverán a reconstruir pero se llevarán un mega menos tal vez, o dos como mucho