Как стать автором
Обновить

Комментарии 19

Спасибо! Где-нибудь уже работает на реальных проектах?
p.s.
Вот кто-нибудь собрался бы и подобное описание для Yii сделал бы.
Понимаю, что это непростительная жажда халявы *стыдно*
Вам мало в жизни геморроя от костыльных решений?
А регистрация пользователей на форуме и сайте идет в одну БД или в разные?
Ну, и выглядит это все конечно очень коряво…

В идеале бы вообще не трогать файлы форума, а написать что-то свое, используя имеющуюся информацию о структуре ожидаемого объекта User (он ведь в phpBB тоже в сессии хранится?). эдакий конвертер между Ko3 и phpBB, позволяющий интерпретировать текущие данные авторизации в понятные для системы объекты. И подключаться только этот конвертер, а не половину «вражеского» приложения.
Регистрации в разных базах. Выглядит криво, ну а как по другому, phpBB сам нифига не объектно-ориентирован. Только конвертер (адаптер), и подключать его.
У меня все допилы phpBB приводили к одной крайне неприятной проблеме — невозможности оперативно проапгрейдить движок до свежей версии.
Радует, что phpBB4 пишется на Symfony2. А пока да, такого рода извраты неизбежны.
'user_timezone' => 10.00,
'user_dst' => 1,
'user_lang' => 'ru',

Вот это лучше не в коде задавать, а получать значения из $config, дабы сохранить возможность настройки phpBB в администраторском разделе.
Зачем это вообще нужно?!
Я в свое время пошел по другому пути.
Форум положил на отдельный поддомен, он использовал другую БД. Для коханы написал адаптер который при добавлении/редактировании пользователя добавлял его еще и в базу форума.
При этом никаких конфликтов, два разных проекта запускались отдельно, их легко обновлять и поддерживать. Синхронизация только БД.
Единственный минус — нет общей авторизации, т.е. логин и пароль один, но авторизация отдельная.
Можно поподробней про адаптор?
Ну просто некторый объект с методами типа addUser(), editUser()
Пользователь регистрируется на сайте, мы добавляем его себе в базу, а потом объект юзера закидываем в метод Forum_Adapter::addUser($user), который добавляет строчку в форумной табличке. При изменении информации происходит тоже самое.
На форуме регистрация отключена и ссылаеся на регистрацию на сайте.
Также можно добавить методы типа getLastPosts и т.д. они просто будут коннектиться к форумной БД и брать инфу оттуда.
class session // => class session_kohana
class user_kohana extends session_kohana // => class user_kohana extends session_kohana

опечатка? вроде должно быть

class user extends session // => class user_kohana extends session_kohana
Да, спасибо.
Логин и логаут можно подсунуть в includes/auth/auth_custom.php и выбрать в админке нужный метод аутентификации.
Региcтрацию можно сделать отдельно, меняя в шаблоне ссылку для регистрации на свой модуль.
К сожалению, какое-бы решение тут не описали, все равно это будет костыль, какой-то больший, какой-то меньший, но все равно — костыль.
Разработчики форума phpBB постоянно наступают на те же грабли и такое впечатление, что вообще не слушают мнения комьюнити. Думаю, даже с phpBB4 ситуация будет не лучше.

Чтобы хоть как-то упростить интеграцию с phpBB, разработчикам самого phpBB нужно сделать несколько довольно простых вещей:

1. переименовать все классы, стили, функции так, чтобы они начинались с префикса phpbb_ (вот с таблицами в базе сделали ж, а чего про остальное забыли?).
2. сделать единый include, например, чтобы разработчик мог дернуть файл /forum/include.php и все API форума подключиться.
3. сделать единую систему инициализации. Если разработчик будет использовать IDE, то чтобы он набрал phpbb:: и нажал ctrl+space — и IDE подсказала, что дальше можно сделать. Тоесть, создать класс phpbb, который будет либо static, либо singleton, но именно с него все начинается.
4. И только тогда уже выносить методы типа PHPBB::Get()->getUserService()->login(login, pass);…

Т.е., по-простому, наконец нормально выучить и применить хотя-бы базовые основы ООП.

Хотя конечно, есть вариант SOAP API и т.п. — но толку от этого будет не много, если внутри архитектуры полный ппц.
5.3 есть не везде.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории