Recordad que para pedir soporte alguno, debéis facilitar los datos de soporte oportunos por favor, mirad aquí y leer las Normas generales del foro, esto nos servirá de ayuda para dar el mejor soporte..

Gracias.

La Administración de phpBB España.

Reasignar mensajes de usuario

Foros donde podréis dejar vuestras dudas sobre phpBB 3.0.x
Cerrado
aresoto
Observador/a
Mensajes: 13
Registrado: 28 Jun 2011, 10:21

Reasignar mensajes de usuario

#1

Mensaje por aresoto »

Hola a todos, tengo un problemilla :oops:
El otro día mientras un usuario cambiaba su mail de notificaciones y lo confirmaba (el usuario pasa a inactivo) tuve la mala suerte de hacer limpieza de usuarios inactivos, y ya os podéis imaginar que paso, que ese usuario se eliminó pero se mantienen los mensajes de este, mi pregunta es:
¿se puede reasignar los mensajes de un usuario eliminado a otro usuario? ¿como tendría que hacer?

Muchas gracias
URL: http://www.clubkuga.org
Versión phpBB: 3.0.10
MODs Instalados: gallery, phpSEO, portal
Plantilla(s) usada(s): Prosilver, prosilver SE
Servidor: linux

Avatar de Usuario
Rainwod
Ex Staff
Mensajes: 1151
Registrado: 16 Mar 2012, 14:43
Género:
Edad: 30

Re: Reasignar mensajes de usuario

#2

Mensaje por Rainwod »

No tienes ningún backup de tu base de datos???

towen
Moderador
Mensajes: 489
Registrado: 27 Dic 2011, 05:17
Género:
Edad: 28

Re: Reasignar mensajes de usuario

#3

Mensaje por towen »

Podrías cargar el usuario y toda su información desde una copia de la base de datos sacando solamente a ese usuario. Lo otro que creo que podrías hacer, aunque no estoy seguro de que funcione correctamente, es crear un usuario nuevo, y desde la base de datos cambiarle el user_id por el del usuario antiguo, pero repito: no se si funcionaría.

aresoto
Observador/a
Mensajes: 13
Registrado: 28 Jun 2011, 10:21

Re: Reasignar mensajes de usuario

#4

Mensaje por aresoto »

Si, tengo un backup de la bd, ya he probado a crear el usuario y volver a ponerle el ID que tenía en la tabla de user, pero no cambia nada, creo que cuando se borra el usuario todos los mensajes pasan al usuario con ID=1, el tema sería volver a ponerle todos los mensajes en el usuario correcto, lo que tambien mire es que los mensajes si que están lo único es que en las propiedades del usuario solo pone quien lo había publicado
URL: http://www.clubkuga.org
Versión phpBB: 3.0.10
MODs Instalados: gallery, phpSEO, portal
Plantilla(s) usada(s): Prosilver, prosilver SE
Servidor: linux

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 36

Re: Reasignar mensajes de usuario

#5

Mensaje por Alorse »

Hay dos maneras (tal vez más), una fácil y larga y otra un poco arriesgada y corta.

La fácil es ir a cada uno de los mensajes del usuario viejo y darle en Información, allí aparece la opción de Cambiar autor.

La otra arriesgada es hacer un UPDATE en la base de datos, primero hay que buscar el ID del usuario viejo y del usuario nuevo, y en el UPDATE actualizar todos los mensajes de la tabla phpbb_posts y phpbb_topics cuando el id_user sea igual al ID del usuario viejo.

aresoto
Observador/a
Mensajes: 13
Registrado: 28 Jun 2011, 10:21

Re: Reasignar mensajes de usuario

#6

Mensaje por aresoto »

Ante todo muchas gracias por las respuestas.
La fácil ya la conozco, de echo empece a usarla pero se me ocurrió ver los mensajes que tenía el usuario y son cerca de 400 y uufffff me puedo echar un buen rato.
Voy a probar a hacer un update en la bd ya que conozco los dos user_id, obviamente lo voy a probar en una copia de la bd de pruebas.
Si lo consigo pongo las sentencias SQL.

Saludos y gracias
URL: http://www.clubkuga.org
Versión phpBB: 3.0.10
MODs Instalados: gallery, phpSEO, portal
Plantilla(s) usada(s): Prosilver, prosilver SE
Servidor: linux

aresoto
Observador/a
Mensajes: 13
Registrado: 28 Jun 2011, 10:21

Re: Reasignar mensajes de usuario

#7

Mensaje por aresoto »

Hola pues ya lo tengo solucionado, al final con varias querys, se podía hacer una única query pero así explico lo que hace cada una de ellas.

Requisitos
No haber borrado los mensajes del usuario cuando borramos al usuario por error.

Tenemos que saber el user_id del nunevo usuario

Código: Seleccionar todo

SELECT * FROM BaseDeDatos.phpbb_users where username='ponemos el nombre del usuario nuevo';
Mi resultado para el username='pepe' fue el user_id=55 estos son datos ficticios cada uno tiene unos diferentes.

Cambiamos los topics del usuario que se eliminó (PEPE, este es el usuario que se eliminó, pero como observáis está en mayúsculas)
Esto hace lo siguiente, cambia los topic_poster al valor 55(user_id actual) cuando coincida con el usuario que fue eliminiado (PEPE)

Código: Seleccionar todo

update BaseDeDatos.phpbb_topics set topic_poster='55' where topic_first_poster_name='PEPE';
Esto hace lo siguiente, cambia los topic_last_poster_id al valor 55 cuando coincida con el usuario PEPE

Código: Seleccionar todo

update BaseDeDatos.phpbb_topics set topic_last_poster_id='55' where topic_last_poster_name='PEPE';
_______________________________________________
Buscamos todas las respuesta de nuestro usuario

Código: Seleccionar todo

SELECT * FROM BaseDeDatos.phpbb_posts where post_username='PEPE';
Esto nos devuelve todos los mensajes del usuario que fue eliminado
el campo que tenemos que cambiar es poster_id y poner en blanco post_username

Código: Seleccionar todo

update BaseDeDatos.phpbb_posts set poster_id='55' where post_username='PEPE';

Código: Seleccionar todo

update BaseDeDatos.phpbb_posts set post_username='' where post_username='PEPE';
______________________________________________
Actualizamos el numero de mensajes que tiene el usuario
Para ello tenemos que saber cuentos mensajes tiene el usuario

Código: Seleccionar todo

SELECT * FROM BaseDeDatos.phpbb_posts where post_username='pepe';
Una vez sepamos los mensajes que tiene ejecutamos lo siguiente

Código: Seleccionar todo

update BaseDeDatos.phpbb_users set user_posts='numero de mensajes en total' where user_id='55';
URL: http://www.clubkuga.org
Versión phpBB: 3.0.10
MODs Instalados: gallery, phpSEO, portal
Plantilla(s) usada(s): Prosilver, prosilver SE
Servidor: linux

towen
Moderador
Mensajes: 489
Registrado: 27 Dic 2011, 05:17
Género:
Edad: 28

Re: Reasignar mensajes de usuario

#8

Mensaje por towen »

Muy detallada tu guía aresoto, gracias por compartirla. Algo que mencionar, creo que sería también muy bueno que incluyeras como cambiar también los mensajes privados, los pasos son similares solo que en otra tabla. SAlu2

aresoto
Observador/a
Mensajes: 13
Registrado: 28 Jun 2011, 10:21

Re: Reasignar mensajes de usuario

#9

Mensaje por aresoto »

Ok miro de hacerlo y lo completo
URL: http://www.clubkuga.org
Versión phpBB: 3.0.10
MODs Instalados: gallery, phpSEO, portal
Plantilla(s) usada(s): Prosilver, prosilver SE
Servidor: linux

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 36

Re: Reasignar mensajes de usuario

#10

Mensaje por Alorse »

Me alegra que lo halla podido hacer, solo comentar que es mejor que hubieras seguido trabajando con el user_id y no con el nombre de usuario ya que puede dar problemas, algo así:

Código: Seleccionar todo

UPDATE phpbb_posts SET poster_id = 'X'  WHERE poster_id = 'Y';
Y también hay que recordar que hay que actualizar la tabla de temas que no lo vi en el mensaje anterior:

Código: Seleccionar todo

UPDATE phpbb_topics SET topic_poster = 'X'  WHERE topic_poster = 'Y';
Cuando X es el ID del usuario nuevo y Y del antiguo.

El resto se puede hacer desde el ACP haciendo reconteo de mensajes.

aresoto
Observador/a
Mensajes: 13
Registrado: 28 Jun 2011, 10:21

Re: Reasignar mensajes de usuario

#11

Mensaje por aresoto »

Alorse escribió:Me alegra que lo halla podido hacer, solo comentar que es mejor que hubieras seguido trabajando con el user_id y no con el nombre de usuario ya que puede dar problemas, algo así:

Código: Seleccionar todo

UPDATE phpbb_posts SET poster_id = 'X'  WHERE poster_id = 'Y';
Y también hay que recordar que hay que actualizar la tabla de temas que no lo vi en el mensaje anterior:

Código: Seleccionar todo

UPDATE phpbb_topics SET topic_poster = 'X'  WHERE topic_poster = 'Y';
Cuando X es el ID del usuario nuevo y Y del antiguo.

El resto se puede hacer desde el ACP haciendo reconteo de mensajes.
Gracias Alorse, eso esta mas claro pero tengo una duda:
Las querys que pones ¿no es para cambiar un id por otro? al borrar el usuario todos sus mensajes pasan al id 1 que es el Anónimo por eso utilice el nombre.
Si tienes un backup y restauras solo la parte que te interesa (la parte del usuario que se borro) de la tabla post y topic es perfecto las query que pones, de lo contrario tendrías que usar el nombre. ¿creo? espero confirmación.
Sin embargo los mensajes privados no se pueden recuperar sino tienes el backup ya que se eliminan al borrar el usario. :(
URL: http://www.clubkuga.org
Versión phpBB: 3.0.10
MODs Instalados: gallery, phpSEO, portal
Plantilla(s) usada(s): Prosilver, prosilver SE
Servidor: linux

Avatar de Usuario
Alorse
Ex Staff
Mensajes: 5144
Registrado: 22 Mar 2008, 02:14
Género:
Edad: 36

Re: Reasignar mensajes de usuario

#12

Mensaje por Alorse »

aresoto escribió:Las querys que pones ¿no es para cambiar un id por otro?
Exactamente.
aresoto escribió:al borrar el usuario todos sus mensajes pasan al id 1 que es el Anónimo por eso utilice el nombre.
Esto no lo sabia, creí quedaban con el mismo ID, pero entonces si toca hacerlo como tú dices.

Cerrado

Volver a “Foros de Soporte 3.0.x”