Импорт XenForo: существующие идентификаторы тем и сообщений

Привет, друзья,

У меня уже есть форум на Xenforo с примерно четвертью миллиона сообщений.

Несколько дней назад я попробовал импортировать его в Discourse.

Прежде всего, поздравляю всех, кто работал над скриптом импорта. Это был один из самых беспроблемных переходов с одной платформы на другую, который я когда-либо делал.

Тем не менее, у меня есть несколько вопросов.

Сразу отмечу, что Ruby — далеко не мой родной язык, поэтому вполне вероятно, что здесь есть какие-то неточности в понимании, и я упустил что-то очевидное. Приношу извинения, если это так.

Меня интересует, сохраняются ли или как-то связываются ли ID тем/сообщений из предыдущего форума (в данном случае Xenforo) с новыми ID в Discourse во время импорта или после него.

В ходе поиска я видел упоминания об этом для Vbulletin. Просматривая скрипты импорта для XF (и, в конечном итоге, базовый скрипт), я часто встречал упоминание import_ids, но все они, кажется, являются временными переменными, используемыми только в процессе импорта, а затем отбрасываемыми (хотя, как я уже сказал, я не эксперт в Ruby, поэтому могу сильно ошибаться).

Мой форум существует уже довольно давно и прошёл через несколько итераций: PunBB, IPS, VB, а теперь Xenforo. Однако большую часть времени мне удавалось поддерживать работоспособность ссылок на старые темы с помощью нескольких простых пользовательских скриптов. (Конечно, эта простота компенсировалась тем, что большинство этих миграций были гораздо более болезненными;)) Я хотел бы сделать то же самое здесь, но у меня нет какой-либо карты соответствия старых тем новым или поля в базе данных, ссылающегося на старый ID темы.

По крайней мере, мне так кажется, возможно, это где-то есть, но я не могу найти :slight_smile:

Я с радостью поделюсь своими находками с сообществом, просто мне нужны какие-то указатели в правильном направлении.

Спасибо.

Старые ID находятся в PostCustomFields и создаются в рамках импортера.

Вы можете посмотреть на другие импортеры, которые создают Permalinks. В качестве примера можно взять импортер для Vbulletin. Также обратите внимание на «нормализацию пермалинков» — регулярное выражение, которое применяется перед сопоставлением пермалинков. Это позволяет, например, создать пермалинк вида ‘/oldtopic/<topic_id>’, который с помощью регулярного выражения можно сопоставить с адресом /topic/blah.php?xdfj=<topic_id>#93m3lsdfj.