Skip to content

Надо слить две базы в единый форум

Есть два форума, оба доведены до версии 3.4.9, надо их слить в один.

При помощи IP Converters это вроде бы успешно получилось, но…

 

 

1. Не очень понятно что происходит с одноимёнными пользователями. В принципе большинство одноимённых пользователей - реально один пользователь и их надо тоже объединять.

Но наверняка есть и разные одноимённые пользователи, и их объединять нельзя.

IP Converters очевидно объединяет пользователей по email, но как он поступает если имя одинаковое но email разный?

 

 

2. В постах было много URL-ссылок на соседние топики/посты/пользователей - старый_форум/index.php?showtopic=XXXXX&p=YYYYY, showuser=ZZZZZ, и т.п.

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

Домен то я могу в ссылках изменить при помощи поиска и замены в SQL-дампе, но вот изменить старые ID на новые - я не представляю как.

Что делать?

 

Если при переносе индексы во всех ID постов/юзеров увеличиваются линейно и в том же порядке - то есть мысль написать программу которая находит в перенесённой части базы все URL-ссылки на старые ID и увеличивает их… Но наверняка ведь есть какие-то готовые решения?

Featured Replies

Не очень понятно что происходит с одноимёнными пользователями

Смотрите логи в папке cache. Название файла начинается с converter_error_log_

 

2. Данные есть в таблицах, названия которых начинаются с conv_.

  • Author
2. Данные есть в таблицах, названия которых начинаются с conv_.
Да, есть там это. Запрос типа SELECT ipb_id FROM b_conv_link_topics WHERE foreign_id=старый_ID - выводит новый ID топика и т.п.

 

А есть какие-то готовые инструменты для правки всех ID в ссылках на посты/топики/пользователей?

Раз в БД эти таблицы есть - то очевидно их кто-то использует?

А есть какие-то готовые инструменты для правки всех ID в ссылках на посты/топики/пользователей?

Не встречал.

Раз в БД эти таблицы есть - то очевидно их кто-то использует?

В папке Tools, что идет с конвертерами, есть скрипты-редиректы для различных cms
  • Author
Не встречал.
А как же люди сливают два форума в один? Так и оставляют кривые ссылки в постах перенесённых со старого форума? Ведь практически на любом форуме есть URL-ссылки на посты…

 

В папке Tools, что идет с конвертерами, есть скрипты-редиректы для различных cms
Я не очень понимаю как эти скрипты использовать, куда их надо подключать и как…

Но главное - я там не вижу сриптов для самой IPB. Там всё для других систем (Links - vBulletin 5, Links - XenForo, Links - phpBB и т.п.), а у меня то оба форума на IPB.

Edited by f2065

А как же люди сливают два форума в один?

Нужно у них спросить.

Может устанавливают реврайты в htaccess, может отлавливают ссылки в php-скриптах, может на старом форуме делают редирект на php-файл на новом, где проверяют ссылки.

 

Основная задача конвертера - преобразование форума на платформе, отличной от ipboard, в ipboard.

Вот свежий пример http://ipbskins.ru/forum/topic13638.html/. Кто виноват, что ips не подумали про ваши ссылки в постах :)

  • Author
2. Данные есть в таблицах, названия которых начинаются с conv_.
А там я что-то не вижу ID пользователей… Только ID постов, тем, и вроде бы ЛС.

Ничего похожего на ID пользователей нет.

 

И как править в таком случае ссылки вида /showuser.php ?

 

Разве что превращать на исходном форуме их в тег MEMBER, но что-то он не прижился да и у него очевидно проблема будет если пользователь переименуется… Вобщем это путь не подходит. А более я что-то не вижу решений (кроме как вообще удалить все URL index.php?showuser=[01234567890]+ на добавляемом форуме до слияния).

И как править в таком случае ссылки вида /showuser.php

Только скриптом. Определить новый id пользователя можно и по дополнительным признакам - никнейм, почта. Т.е. парсите ссылку регуляркой, определяете старый id, по нему, в таблице из старой базы выбираете данные пользователя, ищете их в новой базе, генерите ссылку, делаете замену. Это не так сложно как кажется. :)

А там я что-то не вижу ID пользователей… Только ID постов, тем, и вроде бы ЛС.

Ничего похожего на ID пользователей нет.

SELECT * FROM conv_link WHERE type='members';

  • Author

А вот все ID аттачей при конвертации корректно преобразуются…

Хотя в SELECT * FROM `b_conv_link` WHERE `type`='attachments' записаны их старые номера (foreign_id) и новые номер (ipb_id).

Нашёл конкретные посты, у них в исходной базе и в финальной - разные ID, всё правильно изменено. Т.е. IP Converter номера аттачей переписал во всех постах.

 

Но почему аналогичным образом не конвертируются ID топиков, постов, пользователей???

Может надо в исходной базе что-то донастроить, или ссылки showtopic в какой-то другой формат преобразовать?

Edited by f2065

  • Author

Проблему решил так:

Выгрузил php-скриптом foreign_id и ipb_id для members forums posts topics в бинарные файлы.

Выгрузил дамп базы.

Написал конвертилку текста которая пробегается по дамп-файлу и в соответствии с foreign_id=ipb_id изменяет там адрес/ID в домен/index.php?showtopic=ID, домен/index.php?showtopic=ID&p=ID, домен/index.php?showuser=ID, домен/index.php?app=forums&module=forums&section=findpost&pid=ID.

Вроде всё как надо в итоге стало, все ссылки на новые правильные места стали вести, с правильными ID.

 

Если эта процедура востребована - то можно сделать готовый набор скриптов и инструментов…

Готовый, универсальный набор инструментов "для чайника" вы не сделаете, это задачи из разряда "обработать напильником". У меня есть уже с десяток таких наборов постобработки конвертированных баз (ссылки, бб-коды, смайлы), каждый подходит исключительно для одного конкретного случая.

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.