Если вы решили перенести ваш форум с движка IPB 2.3 на phpBB 3.0, вам понадобится следующее:
1. Установленный работающий форум IPB с последней актуальной базой.
2. Пакет установки phpBB. Скачать русскую версию можно на сайте русской поддержки.
Подготовка к конвертированию форума
1. Установим phpBB. Новый и старый форумы должны находиться на одном сервере в соседних папках (например /ipb и /phpbb). Нужно указывать при установке базу, отличную от базы старого форума
2. Конвертор из версии 2.0 уже входит в инсталляционный пакет, но конвертор из 2.3 нужно загрузить дополнительно после установки.
Архив с конвертором следует распаковать в корневой каталог PhpBB с сохранением структуры папок. Так auth_xxx.php файл окажется в /includes/auth, а functions_xxx.php и convert_xxx.php в /install/convertors. Auth_xxx.php нужен, чтобы иметь возможность войти в систему после преобразования.
Таким образом вы должны получить следующую структуру папок:
{phpBB3_root}/install/convertors/convert_xxx.php
{phpBB3_root}/install/convertors/functions_xxx.php
{phpBB3_root}/includes/auth/auth_xxx.php
3. Важно! Перед запуском преобразования нужно установить group_id (синхронизацию групп пользователей, а значит и их прав между старым и новым форумами)
Откройте convert_ipb23.php
Найдите
define ('IPB_ADMIN', 4);
define ('IPB_MODERATOR', 7);
define ('IPB_MEMBER', 3);
define ('IPB_GUEST', 2);
define ('IPB_VALIDATING', 1);
define ('IPB_BANNED', 5);
define ('IPB_CO-ADMIN', 6);
Проверьте значения чисел в базе IPB в таблице. Группы, не относящиеся к стандартрым, созданные вами, будут созданы автоматически. Сохраните и закройте файл.
4. Важно! Работа с русской кодировкой
В файле functions_ipb23.php в функции phpbb_set_encoding нужно прописать кодировку исходного форума IPB:
function phpbb_set_encoding($text, $grab_user_lang = true)
{
global $lang_enc_array, $convert_row, $db_character_set;
global $convert, $phpEx;
// get from Table:language, charset=
//$db_character_set = 'iso-8859-1';
$db_character_set = 'windows-1251';
$encoding = $db_character_set;
return utf8_recode($text, $encoding);
}
5. Чтобы избежать неправильного переноса пользователей с русскими именами выполните следующее:
в файле convert_ipb23.php найдите строчки
array('username', 'members.name', array('function1' => 'ipb_fix_name', 'function2' => 'phpbb_set_encoding', 'function3' => 'utf8_htmlspecialchars')),
array('username_clean', 'members.name', array('function1' => 'ipb_fix_name', 'function2' => 'phpbb_set_clean_name')),
замените их на
array('username', 'members.name', array('function1' => 'phpbb_set_encoding', 'function2' => 'utf8_htmlspecialchars')),
array('username_clean', 'members.name', array('function1' => 'phpbb_set_clean_name')),
Кодировка имен пользователей будет сохранена, но после конвертации нужно будет запустить скрипт username_clean.php, чтобы пользователи с русскими именами могли нормально заходить на форум.
Конвертирование форума
1. Перейдите по ссылке {phpbb_root_directory}/install/index.php, выберите вкладку «Конвертирование» и нажмите на появившийся в списке установленный конвертор.
2. Следующим шагом укажите параметры базы данных, из которой следует брать данные для переноса.
Опцию «Refresh page to continue conversion» лучше оставить по умолчанию «Yes» (автор пишет, что параметр «No» используют для тестирования) .
3. После нажатия кнопки «Begin conversion» конвертор проверит введенные данные и возможность подключения к базе. При успешной проверке вы увидите еще одну кнопку «Begin Conversion». После нажатия на нее произойдет еще одна проверка, на этот раз самих файлов конвертора. После этого можно жать кнопку «Continue Conversion».
4. Конвертор перейдет к обработке старого форума, о чем будет вас пошагово уведомлять. После конвертирования вы увидите сообщение о том, что поисковый индекс не был преобразован (это не ошибка, так и должно быть).
Конвертор не повредит исходную базу данных и файлы старого форума. Если с переносом что-то пойдет не так, старый форум никуда не денется.
5. Дальше удалите папку install, чтоб иметь возможность зайти в форумы.
6. Зайдите в панель администрирования. Во вкладке «Обслуживание» в меню выберите пункт «Поисковые индексы» и в разделе Fulltext native нажмите кнопку «Создать индексы». После этого система выполнит поиск (в зависимости от размера форума и количества тем процесс может оказаться длительным).
7. Залейте в папку форума скрипт username_clean.php и перейдите по ссылке {phpbb_root_directory}/ username_clean.php. После переконвертирования имен пользователей этот скрипт можно удалить.
8. Проверьте, всё ли работает в новом форуме phpBB3, просмотрите разрешения доступа, чтоб форумы и посты правильно отображались. Также убедитесь, что файлы были скопированы правильно (аватары, смайлики и вложения).
Итого
Переносится практически всё содержимое старого форума: пользователи (в том числе с русскими именами), их пароли, форумы, темы, вложения, аватары.
Возможные проблемы
1. При попытке зайти в форум появляется сообщение «Для просмотра или размещения сообщений в этом форуме необходимо ввести пароль.»
Решение: в панели администрирования во вкладке «Форумы» выберите нужный форум, нажмите иконку «Редактировать форум» и поставьте галочку «Удалить пароль подтверждения».
2. Не показывает аватары
Решение: в панели администрирования во вкладке «Общие» выберите пункт меню «Аватары» и установите переключатель «Разрешить использование аватаров».
Файлы для конвертирования:
- PhpBB 3.0.10 Rus
- Конвертор с исправлениями + оригинал
- Корректное хранение в базе русских имен пользователей: username_clean.php
Источники:
Официальная инструкция конвертора
Исправление ошибок работы с русской базой
С учетом того, что взлом IPB 2.3 поставили на поток статья очень актуальна. Спасибо.