Я могу хотя бы сказать, что это происходит не только в тех случаях, когда старые посты ссылаются на новые.
У меня есть один пример, где я впервые обнаружил эту проблему.
Исходный ID поста: 842948 ссылается на страницу 22 темы, которая уже существовала, и, по крайней мере, стартовый пост (&start=220) имеет ID (842880), меньший, чем ID ссылающегося поста.
После импорта этот исходный пост (который был опубликован всего за несколько дней до создания дампа) ссылается на семилетнюю тему, где у первого поста исходный ID равен 1353.
Мне не удаётся найти никаких подсказок, почему это происходит, никаких сходств в числах каким-либо образом… Исходная ссылка была просто обычной размещённой URL-адресом, который был автоматически превращён в ссылку phpBB. Такие ссылки в целом не вызывают никаких проблем — они работают во многих других местах.
В целом я не ожидаю, что импорт сразу пройдёт гладко. Я действительно доволен тем, как всё прошло до сих пор, но предполагаю, что эта проблема может быть одной из самых сложных для исправления, особенно потому, что у меня пока нет представления о том, как настроить среду разработки/отладки с Discourse. Возможно, скоро придётся в этом разобраться.
По моим воспоминаниям, импортер phpBB по умолчанию заполнял полное имя пользователя в Discourse, угадывая его по адресу электронной почты. Прав ли я, и актуально ли это до сих пор? Я не могу найти ничего об этом в файлах импортера…
Это именно то, чего я не хотел бы видеть при импорте следующего форума.
Также у меня ещё один вопрос.
На текущем форуме phpBB есть пользовательские поля (например, ссылки на Facebook или Instagram пользователей). Я бы хотел импортировать их в пользовательские поля Discourse. Предполагаю, что мне нужно сначала установить и настроить Discourse, добавив эти пользовательские поля, а затем импортировать данные из phpBB с помощью моего собственного скрипта импорта?
Существует ли надёжный способ оценить ежемесячный объём писем, которые Discourse будет отправлять пользователям после миграции с phpBB? Это касается регистраций новых пользователей, упоминаний и ответов, еженедельных дайджестов и так далее. По умолчанию phpBB отправляет очень мало писем, и, думаю, нам придётся сменить текущего провайдера электронной почты.
На данный момент у меня нет подробной статистики по существующему phpBB. Форум работает с 2013 года, в нём 200 000 сообщений и 5500 участников. Новые пользователи регистрируются каждый день.
При всего 20 постах в день, думаю, вы получите максимум около 3000 писем в месяц, что вполне укладывается в бесплатный тариф Mailgun.
Однако, поскольку вы выполняете миграцию с большим количеством пользователей, я рекомендую отключить сводные письма для всех, кто не заходил на ваш форум в последний месяц-два (они всегда смогут включить их самостоятельно, если захотят). Это можно сделать с помощью запроса в консоли Rails, но я делал это для своего проекта год назад и уже не помню точный код, извините.
На мой взгляд, это должна была бы сделать скрипт импорта, в идеале с настройкой, определяющей период с момента последнего визита для включения сводных писем.
Действительно После первого импорта phpBB на мой текущий форум мне пришлось уменьшить значение по умолчанию; мой почтовый провайдер автоматически заблокировал используемый адрес из-за большого количества рассылаемых дайджест-писем. Они были помечены как спам.
Это не совсем одно и то же. На мой взгляд, есть разница между рассылкой дайджестов кому-то в течение X месяцев после его последнего визита (если он сам подписался на это — отсутствие посещений форума не означает, что он не читает дайджесты) и отправкой дайджестов пользователю, который никогда не подписывался на них, но был зарегистрирован в предыдущем форуме. В некоторых юрисдикциях это может быть даже незаконно! Вы можете просто отключить дайджесты для всех перенесённых пользователей, и они смогут включить их самостоятельно, либо поступить так, как сделал я: отключить их для всех, кроме тех, кто заходил за последний месяц и, следовательно, видел объявление «скоро мы перенесём форум». Я считаю, что это разумный компромисс.
Кроме того, это практично: наш форум на phpBB за последний год набрал тысячи аккаунтов спамеров, и отправка им дайджестов четыре раза в месяц исчерпала бы наш бесплатный лимит Mailgun, а затем стала бы обходиться очень дорого. Уменьшение параметра «очистка неактивных пользователей через N дней» в итоге помогло избавиться от них.
Не уверен, что это стоит публиковать здесь или в отдельной теме. Но речь идёт о миграции с phpBB 3, поэтому пишу сюда.
Я успешно выполнил миграцию на Discourse с одной базой данных. Однако у меня есть три разные, независимые сообщества (три разных языка, три разных установки phpBB), которые в идеале я хотел бы объединить в один большой и дружелюбный форум Discourse.
Мой вопрос: как это сделать? Что нужно изменить в скрипте импорта, в базе данных phpBB 3 или в любом другом месте?
Есть несколько пользователей, у которых есть аккаунты на обоих форумах (некоторые, возможно, даже на всех трёх), но единой системы входа (SSO) нет, поэтому у них разные аккаунты на каждом форуме с одинаковыми именами пользователей. Все это разные установки и разные базы данных.
Это не сработает «из коробки», так как скрипт импорта сохраняет оригинальные ID в базу данных Discourse и не импортирует данные с дополнительного форума, если находит запись с таким же ID. Однако я могу предложить два способа решения этой проблемы:
Сложный: вам нужно отредактировать скрипт импорта в нескольких местах и добавить префикс для каждого форума в пользовательские поля import_id, которые хранятся для постов, тем, категорий и пользователей.
Простой, но вы потеряете возможность инкрементального импорта: удаляйте пользовательские поля после каждого импорта.
После первых тестов перед Новым годом мы возвращаемся к работе над нашим проектом миграции. Одна из самых серьёзных проблем по-прежнему — сбой при переписывании ссылок, и я размышляю, как лучше это решить.
@gerhard, мои знания программирования очень базовые, а в Rails в целом и в структуре Discourse в частности я вообще ничего не понимаю — поэтому, пожалуйста, отнеситесь с пониманием к моему вопросу: есть ли возможность обработать случай, когда импортер не находит импортированный пост с указанным в ссылке ID, и вместо того, чтобы подставлять неверную ссылку, добавить текст, информирующий пользователя или администратора, чтобы такие проблемные ссылки можно было найти после импорта?
Моя главная обеспокоенность текущим подходом заключается в том, что такие ссылки выглядят как успешно заменённые, и у вас нет способа найти и исправить их вручную после импорта.
Спасибо за любую помощь, которую вы сможете оказать — это очень ценно.
Один из способов — переписать скрипт так, чтобы он не заменял такие ссылки до завершения импорта всех сообщений. Если вам нужна помощь и у вас есть бюджет, вы можете связаться со мной или написать в Marketplace.
К сожалению, этот проект имеет ограниченный бюджет, и я полагаю, что проблема не настолько важна, чтобы тратить деньги на её решение, но всё же хорошо знать, что вы готовы помочь.
Ещё один вопрос: я заметил, что BB-коды обрабатываются по-разному при импорте. Например, тег [size] просто остаётся как текст, а тег [color] удаляется полностью. Я хотел использовать цвет и нашёл плагин для Discourse, но затем обнаружил, что он также удаляется при импорте. В начальном сообщении сказано, что BB-коды можно импортировать, но я не нашёл никаких настроек, которые контролировали бы, какие именно теги импортируются, а какие нет.
Если есть такая возможность, я предпочёл бы удалить теги [size], но оставить [color]. Не упустил ли я что-то в том, как это обрабатывается, и можно ли это как-то изменить?
Я пытаюсь сделать это, но запутался в инструкциях: какой именно файл настроек вы имеете в виду? И когда это нужно делать — до импорта или после?
Заранее спасибо!
edit: так что, наверное, вы имеете в виду файлы настроек эмодзи в админ-панели (Admin CP)? Есть ли способ сделать это через импорт текстового файла или что-то подобное? У меня около 100 пользовательских смайликов, и я бы предпочел каким-то образом скопировать это сопоставление в Discourse. Это возможно? (Можно ли каким-то образом скопировать файл smilies.pak из phpBB в настройки Discourse?)
Похоже, phpBB обрабатывает удалённые (pruned) темы иначе, чем обычные удалённые темы. В таком случае это пока не поддерживается. Вам нужно выяснить, как phpBB помечает удалённые (pruned) темы как удалённые, и доработать скрипт импорта.
Ааааааааааа, да, конечно! Прошло слишком много времени с тех пор, как я делал первое преобразование. Я совершенно забыл об этом, спасибо!
Что касается обрезанных тем, да, я думал, что всё примерно так и есть. Для моего форума это не большая проблема, но это было удивительно, и, возможно, стоит предупредить других, что такое может случиться.