Интеграция Битрикс и форума на VB

Закончили работу по синхронизации CMS 1С-Битрикс и форума vBulletin. Хотелось бы рассказать о проделанной работе и ее особенностях.
И так поехали.


Общие моменты - что и зачем?

vBulletin считается самым профессиональным и распространенным форумным движком на данный момент и его функционал явно шире, чем функционал форума Битрикс. Кроме того, есть клиенты, которые привыкли работать с этим форумом, а так же бывают ситуации когда форум уже есть и переносить весь контент форума в форум Битрикс просто невозможно.
Так что задача иметь сайт на Битрикс и к нему форум на VB может быть актуальной. Естесвенно в этом случае хочется сделать общую регистрацию и авторизацию, чтобы людям не приходилось 2 раза регистрироваться - сначала на сайте в Битрикс, а потом на форуме в VB. Такая задача перед нами и стояла.

Общая схема работы единой регистрации

После некоторых раздумий было решено сделать базой для регистрации VB - так было удобнее клиенту. То есть нажимая кнопку "войти" или "регистрация" на страницах сайта Битрикс ссылка вела на авторизацию/регистрацию в VB.
Далее после регистрации/авторизации в VB, пользователь оказывается автоматически созданным и авторизованным в Битрикс-е. Имя, логин и аватарка так же транслируются из VB в Битрикс. Естественно при разлогинивании, пользователь автоматом разлогинивается в обоих системах.
Таким образом с точки зрения пользователя он имеет одну учетку, а реально в системе мы имеем 2 синхронизированные базы пользователей - в VB и в Битриксе.

Установка системы

  1. Для того что бы поставить на сервер эти две разные систему необходимо завести 2 отдельные БД.
  2. Устанавливаем 1С - Битрикс в штатном режиме
  3. Установка форума:
    • Качаем дистрибутив форума
    • Заходим в системную папку config меняем в файле конфигурации данные о БД и вписываем доступы наш доступ к бд
    • Далее закидываем все это на хостинг и запускаем install (sitename.ru/forum/install/install.php). Пойдет обычный процесс установки.

Реализация задачи

Фундамент готов, что нам необходимо сделать дальше? Перед нами стоит задача синхронизировать пользователей с vBulletin в 1С-Битрикс, а именно если пользователь прошел регистрацию на стороне vBulletin и подтвердил ее по ссылке которая пришла ему на в письме, то мы должны его зарегистрировать на стороне Битрикса. Что у нас с авторизацией? Все верно та же схема человек проходит авторизацию и в тот же момент вы отсылаем запрос Битриксу на авторизацию даного пользователя. Давай те разберем все по пунктам!

1. Человек проходит регистрацию, на почту он получает письмо в котором есть ссылка подтверждения регистрации. Перейдя по ссылке пользователь подтверждает регистрацию в этот момент у нас отрабатывает файл sitename.ru/forum/register.php - находим участок кода где происходит регистрация после подтверждения. Подключаем наш класс, в конструктор которого передаем информацию о пользователе имя и mail это вся необходимая информация на стороне битрикса (так же нам нужно еще аватарка пользователя ее мы будем обновлять уже в момент авторизации на форум так как при регистрации пользователя ее еще нет)



2 Что бы войти на форум человек должен пройти авторизацию. За это отвечает файл sitename.ru/forum/login.php после того как пользователя авторизовали мы отправляем данные на авторизацию в битрикс перед тем как отправлять запрос на авторизацию пользователя нам необходимо получить его аватарку, получить ее по прямой ссылке в любой момент мы не можем изза особенностей безопасности vBulletin, по этому в момент авторизации мы создаем дубликат аватарки в папку кеша, и после того как она у нас будет загружена на стороне битрикса мы ее удаляем.


3 как быть с галкой «Запомнить меня»?
Все просто - если человек поставил эту галку в VB то в переменную $_COOKIE[‘bbuserid'] сохранялся ID пользователя, соответственно если авторизация происходила без нее то переменная не создавалась, таким образом на стороне битрикс мы могли определить как производить авторизацию пользователя
					
$save = false;// не запоминать пользователя

if($_COOKIE['bbuserid'] > 0){
	$save = true; //запоминать пользователя
}
$user->Authorize($arUser['ID'],$save);


4 Как мы подганяли визуальную часть шапки сайта и футера.
Для того что бы изменить визуальную часть шапки форума и футера с целью создать единую шапку и ощущение, что человек заходя на форум не попадает на другой сайт с другой CMS, нам необходимо подогнать наш HTML и CSS файлы это можно сделать в шаблоне форума.