Общие пользователи для форума phpBB3 и Drupal5

Главные вкладки

Аватар пользователя VladSavitsky VladSavitsky 8 февраля 2008 в 14:45

Продолжаем тему начатую в статье "Интеграция phpBB3 и Drupal 5.x". В статье я выбрал модуль phpbb.
Вадим (vb) выслал мне модуль, который он сам сделал для интеграции phpBB и Drupal. Раньше он сделал интеграцию SMFforum!...

Я долго колебался, потому что начал делать интеграцию на модуле, который выбрал. В итоге решил попробовать модуль Вадима на локальной машине. Скачал все базы, восстановил дамп базы (14 мегов). Импорт большой базы в нужной кодировке:
mysql -u root -p --default-character-set=utf8  DBNAME < ./dump.sql

Отключил чистые ссылки и тд. и т.п., но всё равно форум не заработал... Учитывая, что интеграция делалась на реально работающем уже сервере, то я рисковать не стал и постарался восстановить существующих пользователей из форума и сохранить существующих из друпала.

Итак, задача:

  • Есть форум, где есть пользователи и у них есть посты.
  • Есть друпал, где свои пользователи и их материалы (ноды).

Нужно:

  1. это всё объединить так, чтобы пользователи регистрировались только в друпал и свободно работали в форуме без перерегистрации.
  2. сохранить посты за их авторами в форуме
  3. сохранить ноды и прочее в друпале за их авторами

Идея:
Друпал знаем лучше, чем 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)
  • Безопасность: после применения сразу удалить!!!

Возможно, завра или послезавтра это будет частью модуля по интеграции, а сейчас это куски кода, который были написаны, чтобы избавить меня от тупой работы. Не люблю тупую работу!

ВложениеРазмер
Иконка простого текстового файла uid.php_.txt1.09 КБ
Иконка простого текстового файла phpbb3_to_drupal5.php_.txt6.24 КБ

Комментарии

Аватар пользователя VladSavitsky VladSavitsky 8 февраля 2008 в 16:38

К статье это не имеет отношения, но полезная инфа:

  • phpBB3 создаёт в таблице пользователей записи для поисковиков (около 50) штук. Зачем? - не знаю. Я на всякий случай их тоже сделал в друпале, но я сильно сомневаюсь, что будет тот же эффект.
  • Интеграция с форумом не работает с модулем Маскарад.
  • В друпале суперпользователь имеет ID 1, а в форуме ID 2. Их нужно жёстко прописать по этим номерам. Друпальский суперадмин (номер 1) не может входить в форум, поэтому имеет смысл дать пользователю номер 2 админские права в друпале и работать под ним как админ. Опять же - под админом сайтом нужно только управлять, а не писать статьи - так безопаснее.
Аватар пользователя VladSavitsky VladSavitsky 8 февраля 2008 в 21:56

Модуль от Вадима (vd) такой проблемы не имеет (http://vgb.org.ru/files/phpbbforum-5.x-1.x-dev.zip).

ID пользователей не играют роли. Если имя и пароль совпадают, то модуль считает это одним пользователем.

vb:  если входиш через друпал с phpbb ником и паролем, то друпаловский юзер или создается или ему меняется пароль . Если один ник и пароль один авторизация идет через друпал.

Мне не хватило времени на тестирование модуля от Вадима, а поставить на работающий сервер я не рискнул. Хотя сейчас использовал бы этот модуль, потому что он экономит время на объединение пользователей.