Продолжаем тему начатую в статье "Интеграция phpBB3 и Drupal 5.x". В статье я выбрал модуль phpbb.
Вадим (vb) выслал мне модуль, который он сам сделал для интеграции phpBB и Drupal. Раньше он сделал интеграцию SMFforum!...
Я долго колебался, потому что начал делать интеграцию на модуле, который выбрал. В итоге решил попробовать модуль Вадима на локальной машине. Скачал все базы, восстановил дамп базы (14 мегов). Импорт большой базы в нужной кодировке:
mysql -u root -p --default-character-set=utf8 DBNAME < ./dump.sql
Отключил чистые ссылки и тд. и т.п., но всё равно форум не заработал... Учитывая, что интеграция делалась на реально работающем уже сервере, то я рисковать не стал и постарался восстановить существующих пользователей из форума и сохранить существующих из друпала.
Итак, задача:
- Есть форум, где есть пользователи и у них есть посты.
- Есть друпал, где свои пользователи и их материалы (ноды).
Нужно:
- это всё объединить так, чтобы пользователи регистрировались только в друпал и свободно работали в форуме без перерегистрации.
- сохранить посты за их авторами в форуме
- сохранить ноды и прочее в друпале за их авторами
Идея:
Друпал знаем лучше, чем phpBB, поэтому будем кромсать друпал, а форумчан оставим в покое.
Логика такая:
- Пользователи должны совпадать по ID в таблицах форума и друпала.
- Если в таблицах будут отличаться данные по паролю, мылу и прочее, то их пользователь не сможет поменять - значит нужно восстановить все возможные данные.
Решение:
Опишу как делал это я:
- Сделал полный бекап базы.
- Сделал дамп таблиц USERS форума и друпала в формате электронной таблицы через phpmyadmin.
- Открыл файлы и совместил в один, чтобы удобнее было работать.
- Сделал ещё один лист, где скопировал данные ID и имя пользователя из обоих дампов (листов).Скриншот прилагаю. Эти махинации нужны для того, чтобы ничего не перепутать и видеть полную картину перед глазами.
- Остановился и подумал.
- Попил чай с бутером.
- Опять подумал.
- Когда я стал уверен, что я понимаю точно, что я делаю. Проверил открывается ли файл бекапа - на всякий случай!
А теперь типовые манипуляции.
Пользователя в друпал нет, а в форуме он есть.
- Получить ID из форума и проверить свободен ли ID в таблице друпала.
- Использовал скрипт phpbb3_to_drupal5.php, чтобы скопировать данные пользователя из форума в друпал (описание ниже).
Пользователь есть и в форуме, и в друпал, но имеет разные ID.
Вариант 1. Нужно оставить логин и пароль такие же как для в друпал:
- Тогда нужно в phpmyadmin открыть друпал таблицу users и для этого пользователя поменять ID на тот, что в таблице users форума. Если этот ID в друпал-таблице существуюет, то вы не сможете переписать его - нужно сначала будет разобраться с ним. В результате в обоих таблицах должен быть пользователь с одним ID, но разными данными о пользователе. Лично я их переносил вручную из одной таблицы в другую, потому что у меня таких было 3 пользователя.
- Использовал скрипт uid.php для перемещения ВСЕХ данных о пользователе на другой ID (описание ниже).
Вариант 2. Нужно оставить логин и пароль из форума.
- Получить ID из форума и проверить свободен ли ID в таблице друпала.
- Использовал скрипт phpbb3_to_drupal5.php, чтобы скопировать данные пользователя из форума в друпал (описание ниже).
- Использовал скрипт uid.php для перемещения ВСЕХ данных о пользователе на другой ID (описание ниже).
Пользователь есть только в Друпал.
Ну... у меня такого не было...
- Лучше всего создать нового пользователя. Модуль интеграции пропишет все данные куда нужно (и в друпале, и в форуме).
- Вручную перекинуть пароль и прочие данные со старого ID на новый (в 2х таблицах: форума и друпал).
- Использовал скрипт uid.php для перемещения ВСЕХ данных о пользователе на другой ID (описание ниже).
Кажется всё. На самом деле всё сложнее - просто пока писал привёл мысли в порядок.
Описания скриптов.
phpbb3_to_drupal5.php
- Берёт данные из таблицы "phpbb3_users" (имя таблицы можно изменить в скрипте) и копирует с таблицу друпал "users" (тоже можно изменить).
- Есть пакетная обработка. Внутри скрипта указывает начальный ID и конечный ID.
- Скрипт нужно положить в корень друпала.
- Вызов из браузера: http:// имя сайта/phpbb3_to_drupal5.php?uid=3 (для пользователя с ID=3)
- Безопасность: после применения сразу удалить!!!
uid.php
- Ищет всё, что привязано к пользователю с uid и меняет на новый номер. Просмотрите таблицы, которые зашиты в скрипте (это те, что есть у меня). Если у вас этих модулей нет, то нет и таблиц и скрипт выдаст ошибку.
- Чтобы настроить его под себя нужно сделать дамп только структуры вашей базы (без данных), открыть дамп и найти все таблицы с полем "uid" и внести их в массив в начале скрипта.
- Скрипт нужно положить в корень друпала.
- Вызов из браузера: http:// имя сайта/uid.php?uid=23&new_uid=5 (если нужно все данные и документы пользователя с ID=23 присвоить пользователю с ID 5)
- Безопасность: после применения сразу удалить!!!
Возможно, завра или послезавтра это будет частью модуля по интеграции, а сейчас это куски кода, который были написаны, чтобы избавить меня от тупой работы. Не люблю тупую работу!
Вложение | Размер |
---|---|
![]() | 1.09 КБ |
![]() | 6.24 КБ |
Комментарии
К статье это не имеет отношения, но полезная инфа:
Модуль от Вадима (vd) такой проблемы не имеет (http://vgb.org.ru/files/phpbbforum-5.x-1.x-dev.zip).
ID пользователей не играют роли. Если имя и пароль совпадают, то модуль считает это одним пользователем.
vb: если входиш через друпал с phpbb ником и паролем, то друпаловский юзер или создается или ему меняется пароль . Если один ник и пароль один авторизация идет через друпал.
Мне не хватило времени на тестирование модуля от Вадима, а поставить на работающий сервер я не рискнул. Хотя сейчас использовал бы этот модуль, потому что он экономит время на объединение пользователей.