Migrar un foro phpBB3 a Discourse

Al menos puedo decir que esto no solo ocurre en los casos donde publicaciones antiguas enlazan a nuevas.

Tengo un ejemplo donde encontré el problema por primera vez.

ID de la publicación original: 842948 enlaza a la página 22 de un hilo que ya existía, y al menos la publicación inicial (&start=220) tiene un ID inferior al de la publicación que enlaza (842880).

Tras la importación, esta publicación original (que fue publicada solo unos días antes de crear la copia de seguridad) enlaza a un hilo de 7 años de antigüedad donde la primera publicación tiene un ID original de 1353.

No logro encontrar ninguna pista sobre por qué ocurre esto, ni similitudes entre los números de ninguna manera… El enlace original era simplemente una URL publicada normalmente que phpBB enlazó automáticamente. Este tipo de enlaces en general no causan problemas; funcionan correctamente en varios otros lugares.

En general, no espero que la importación funcione perfectamente de inmediato. Estoy muy satisfecho con cómo ha ido hasta ahora, pero asumo que este problema podría ser uno de los más difíciles de solucionar, especialmente porque aún no tengo ni idea de cómo configurar un entorno de desarrollo o depuración con Discourse. Probablemente tenga que profundizar en eso pronto.

3 Me gusta

Hola,
Por lo que recuerdo, el importador de phpBB, por defecto, rellenaba el nombre completo del usuario de Discourse adivinando a partir de la dirección de correo electrónico del usuario. ¿Es correcto y sigue siendo así? No he encontrado nada sobre esto en los archivos del importador…

Esto es algo que no me gustaría que ocurriera en el próximo foro que pueda importar.

Además, otra pregunta.

En el foro phpBB actual, hay campos de usuario personalizados (como las URLs de Facebook o Instagram de los usuarios). Me gustaría importar esto en los campos personalizados de Discourse. Supongo que lo que haré será primero instalar y configurar Discourse añadiendo estos campos de usuario personalizados y luego importar los datos de phpBB desde mi script de importación personalizado.

1 me gusta

Eso ya no sucede.

Eso suena como un buen plan.

6 Me gusta

¿Existe una forma fiable de estimar el volumen mensual de correos electrónicos que Discourse enviará a los usuarios tras una migración desde phpBB? Nuevas inscripciones, menciones y respuestas, resúmenes semanales, etc. phpBB envía muy pocos correos por defecto y creo que tendremos que cambiar el proveedor de correo actual.

Actualmente no tengo muchas estadísticas del phpBB real. Existe desde 2013, con 200.000 mensajes y 5.500 miembros. Se registran nuevos miembros todos los días.

1 me gusta

¿Cuántas publicaciones al día?

1 me gusta

Aún no lo sé. Actualmente solo tengo las estadísticas públicas. Quizás 20.

1 me gusta

Con solo 20 publicaciones al día, creo que probablemente estarías hablando de un máximo de 3000 correos electrónicos al mes, lo cual está perfectamente dentro del plan gratuito de Mailgun.

Sin embargo, dado que estás migrando con muchos usuarios, te recomendaría desactivar los correos de resumen para todos los que no hayan visitado tu foro en el último mes o dos (siempre pueden activarlos ellos mismos si lo desean). Puedes hacerlo con una consulta en la consola de Rails, pero ha pasado un año desde que lo hice para el mío, así que no recuerdo el código exacto, lo siento.

En realidad, eso debería ser algo que el script de importación podría hacer por ti, a mi juicio, idealmente con una configuración para el tiempo transcurrido desde la última visita para habilitar los correos de resumen.

4 Me gusta

No estoy de acuerdo. Eso no es algo que deba hacer un script de importación, pero existe una configuración del sitio para esto: suprimir correo electrónico de resumen después de días

4 Me gusta

De hecho :slight_smile: Después de mi primera importación de phpBB en mi foro actual, tuve que reducir el valor predeterminado; mi proveedor de correo bloqueó automáticamente la dirección utilizada debido a todos los correos de resumen enviados. Fue marcado como spam.

1 me gusta

No es exactamente lo mismo. En mi opinión, hay una diferencia entre enviar correos electrónicos de resumen a alguien durante X meses desde su última visita, ya que se inscribió para recibirlos (el hecho de que no visiten el foro no significa que no estén leyendo los correos de resumen) y enviar correos de resumen a un usuario que nunca se inscribió para recibirlos porque se registró en el foro anterior, ¡lo cual podría no ser legal en algunas jurisdicciones! Podrías simplemente desactivar los resúmenes para todos los usuarios migrados y permitir que los activen por sí mismos, o hacer lo que hice yo: desactivarlos para todos, excepto para aquellos que visitaron el foro en el último mes y, por lo tanto, habrían visto el anuncio de “pronto migraremos el foro”. Creo que es un punto medio justo.

También es práctico: nuestro foro de phpBB había acumulado miles de cuentas de spammers en el último año, y enviarles el resumen cuatro veces al mes habría agotado nuestra cuota gratuita de Mailgun y luego habría comenzado a generar costos elevados. Reducir la opción “limpiar usuarios inactivos después de X días” finalmente permitió eliminarlos.

5 Me gusta

No estoy seguro si esto pertenece aquí o en un tema separado. Pero se trata de migrar desde phpBB 3, así que aquí estoy.

He migrado con éxito a Discourse con 1 base de datos. Sin embargo, tengo 3 comunidades diferentes y separadas (3 idiomas distintos, 3 instalaciones distintas de phpBB), que idealmente me gustaría fusionar todas en un solo gran foro feliz de Discourse.

Mi pregunta es: ¿cómo podría hacerlo? ¿Qué necesito cambiar en el script de importación / la base de datos de phpBB 3 / en cualquier otro lugar?
Hay algunos usuarios que tienen cuentas en ambos foros (algunos quizás incluso en los 3), pero no hay inicio de sesión único, por lo que tienen una cuenta diferente en cada foro con el mismo nombre de usuario. Son todas instalaciones diferentes y bases de datos diferentes.

Sería increíble si esto fuera factible.

¡Gracias de antemano por cualquier ayuda!

1 me gusta

No funcionará directamente, ya que el script de importación almacena los IDs originales en la base de datos de Discourse y no importará datos de un foro adicional si encuentra un registro con el mismo ID. Sin embargo, se me ocurren dos formas de resolver esto:

  1. Difícil: Necesitas editar el script de importación en varios lugares y agregar un prefijo para cada foro a los campos personalizados import_id almacenados para publicaciones, temas, categorías y usuarios.

  2. Fácil, pero perderás la capacidad de realizar importaciones incrementales: Elimina los campos personalizados después de cada importación.

    TopicCustomField.where(name: 'import_id').delete_all
    PostCustomField.where(name: 'import_id').delete_all
    CategoryCustomField.where(name: 'import_id').delete_all
    UserCustomField.where(name: 'import_id').delete_all
    

La solución 2 no ha sido probada, pero en teoría debería funcionar. Crea una copia de seguridad antes de intentarlo.

7 Me gusta

Después de las primeras pruebas antes de fin de año, retomamos el proyecto de migración. Uno de los mayores problemas que persiste es la reescritura fallida de enlaces, y estoy pensando en cuál sería la mejor manera de abordarlo.

@gerhard, mis conocimientos de programación son muy básicos y no tengo casi ningún conocimiento sobre Rails en general ni sobre la estructura detallada de Discourse, así que por favor ten paciencia con mi pregunta: ¿Existe alguna posibilidad de manejar el caso en que el importador no encuentre una publicación importada con el ID dado en el enlace, y en lugar de reemplazarlo con un enlace incorrecto, se añada algún texto que informe al usuario o administrador y haga que estos enlaces problemáticos sean identificables después de la importación?

Mi principal preocupación con el funcionamiento actual es que esos enlaces parecen haber sido reemplazados correctamente, y no hay forma de encontrarlos y corregirlos manualmente después de la importación.

Gracias por cualquier ayuda que puedas brindarme; lo aprecio mucho.

1 me gusta

Una forma de hacerlo es reescribir el script para que no reemplace esos enlaces hasta después de que se hayan importado todas las publicaciones. Si necesitas ayuda y tienes un presupuesto, puedes contactarme o publicar en Marketplace.

4 Me gusta

Desafortunadamente, este proyecto tiene un presupuesto limitado y supongo que el problema no es lo suficientemente importante como para gastar dinero en ello, pero es bueno saber que estarías disponible para eso.

Otra pregunta: Noté que los códigos BB parecen manejarse de manera diferente al importar. [size], por ejemplo, simplemente se deja como texto, mientras que [color] parece eliminarse por completo. Quería reutilizar el color y descubrí que hay un plugin de Discourse para eso, pero luego noté que parece eliminarse durante la importación. El mensaje inicial dice que los códigos BB pueden importarse, pero no pude encontrar ninguna configuración que controle cuáles pueden importarse o no.

Si hay una posibilidad, preferiría eliminar las etiquetas de tamaño y dejar el color. ¿Hay algo que esté pasando por alto sobre cómo se maneja esto y cómo podría cambiarse?

1 me gusta

Acabo de descubrir que los temas que fueron eliminados en mi foro phpBB, y que pensé que habían desaparecido, de alguna manera se han transferido a Discourse.

¿Cómo es eso posible?

1 me gusta

Estoy intentando hacer esto, pero me he perdido con las instrucciones: ¿a qué archivo de configuración te refieres? ¿Y cuándo debo hacerlo: antes o después de la importación?
¡Gracias de antemano!

edit: así que creo que te refieres a los archivos de configuración de emojis en el Panel de Administración (CP). ¿Existe alguna manera de hacer esto importando un archivo de texto o algo similar? Tengo unas 100 sonrisas personalizadas y preferiría copiar esa asignación a Discourse. ¿Es eso posible? (¿Podría copiar el archivo smily.pak de phpBB a la configuración de Discourse de alguna manera?)

1 me gusta

¿Viste el archivo de configuración del importador, verdad? :wink:

3 Me gusta

Supongo que phpBB maneja los temas podados de manera diferente a los temas eliminados normales. En ese caso, no es compatible en este momento. Tendrás que averiguar cómo phpBB marca los temas podados como eliminados y modificar el script de importación.

3 Me gusta

¡Diiiije! Sí, por supuesto. Ha pasado demasiado tiempo desde que hice la primera conversión. Lo olvidé por completo, ¡gracias!

Sobre los temas eliminados, sí, pensé que era algo así. No es un gran problema para mi foro, pero fue sorprendente y quizás una advertencia para otros de que esto puede ocurrir.

1 me gusta