Website development
PHP
October 2011 9

phpBBex — расширенная версия phpBB 3

phpBBex logophpBB 3 — популярный бесплатный форум. Первая версия вышла в свет в 2000 году, и с тех пор вокруг этого движка сформировалось огромное сообщество. Не глядя на серьёзные архитектурные недостатки третьей ветки, которые остались в наследие от предыдущих версий, данный движок по праву считается одним из самых мощных решений среди бесплатных форумов. Огромное количество модов, написанных сообществом, только способствуют этому.
Как правило, мало кого устраивает стандартная функциональность phpBB 3, и каждый владелец форума устанавливает несколько модов, либо использует готовые сборки, которые включают наиболее популярные модификации. Однако, не все моды реализованы достаточно хорошо. Что-то было написано для старых версий форума, и не было обновлено, из-за чего в новых версиях форума возникают какие-то проблемы.
Несколько лет назад для форума родного города я создал форк с именем phpBBex, где постарался сделать phpBB 3 таким, каким вижу его я. Большинство проделанных изменений не существует в виде модов. Практически все установленные моды были сильно переработаны: исправлены ошибки, код адаптирован под последние версии phpBB. Недавно проект был переведён на Mercurial, в результате чего поддержка форка значительно упростилась. Надеюсь, что кто-то найдёт этот проект полезным.

Что изменилось?


Изменений очень много. В большинстве своём это просто приятные мелочи. Остановимся на этом немного подробнее. В качестве демо я буду использовать сайт города Слуцка (логин: tester, пароль: tester), который отличается от phpBBex только добавленной галереей и чатом. Посмотреть для сравнения на работу оригинального phpBB 3 можно на сайте try-phpbb.com.

Главная страница


Главная страница
  • В phpBBex используется модифицированный prosilver в новой цветовой схеме
  • Верхний ряд ссылок можно редактировать из админки. На приведённом сайте добавлены ссылки на галерею и чат, которых нет в самом phpBBex (поскольку phpBBex — это только форум)
  • Новая компактная шапка с выпадающим меню для быстрого доступа ко всем страницам, включая панели управления для администраторов и модераторов
  • Осталось свободное место для баннера :)
  • Отображаются важные объявления
  • Отображается название темы с последним сообщением
  • Текст copyright notice можно редактировать из админки
  • В рунете чаще всего используется счётчик liveinternet.ru, поэтому он встроен в шаблон. Можно удалить. Поскольку сервер liveinternet.ru не всегда быстро отвечает, код счётчика вставляется с небольшой задержкой, чтобы браузер не беспокоил пользователя индикатором «загрузка»

Просмотр темы


Просмотр темы
  • Путь по сайту отображается под заголовком только тогда, когда это нужно (на страницах просмотра форумов и тем)
  • Заметные кнопки действий над темой, размещённые рядом с заголовком (в phpBB 3 разработчики почему-то ограничились неприметными ссылками внизу страницы)
  • Отдельная кнопка для закрытия и открытия темы
  • Кнопки социальных сетей (можно убрать)
  • Обновлён минипрофиль: отображается возраст и пол, спрятано количество сообщений и дата регистрации
  • Название форума, его описание и правила перед формой быстрого ответа
  • Мощный быстрый ответ (переработанный мод от rxu)
  • Доступны все опции отправки ответа (настраивается)
  • Для цитирования достаточно выделить кусочек сообщения и нажать кнопку «Цитата» — выделенный текст автоматически будет помещён в форму быстрого ответа

Создание темы


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

Просмотр профиля


Просмотр профиля
  • Изменён порядок блоков, чтобы более полно использовать пространство на странице
  • Если у пользователя хватает прав, контактные данные отображаются в явном виде, чтобы их можно было скопировать
  • Администратору отображается User-Agent и последний IP адрес пользователя
  • Добавлено поле Skype, по клику открывается диалог в Skype
  • Поля AIM, YIM и MSN были спрятаны, поскольку в СНГ не пользуются большой популярностью
  • Добавлено поле пол, которое отображается рядом с именем пользователя в виде значка

Уведомления


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

Обработка BBCode


Встраиваемые файлы
Встраиваемые в сообщения файлы не переносят строку, что что положительно сказывается на удобстве форматирования сообщения.

Отсутствие лишних переносов строки
После bb-кодов [code], [quote] и [list] не вставляется пустая строка. Визуально темы будут казаться несколько короче :)

Открытые голосования


Открытые голосования
Опционально пользователи могут создавать открытые голосования, в которых видно кто и как проголосовал.

Выполнение нескольких операций с подтверждениями


phpBB 3 не позволяет вызывать несколько страниц подтверждения за один раз. Если вы, например, захотите удалить несколько сообщений в какой-то теме, и откроете для этого соответствующие ссылки «Удалить» в новых окнах, а затем по очереди подтвердите ваши действия, корректно выполнится только последнее вызванное действие, а остальные вызовут ошибку. Согласитесь, очень неприятное явление.
В целях безопасности phpBB 3 для каждого действия с подтверждением требует обязательного вызова страницы подтверждения. То есть удалить сообщение, передав все неободимые скрипту параметры, не вызывая при этом страницу подтверждения, уже не получится. Для каждого подтверждения генерируется уникальный ключ подтверждения confirm_key, который проверяется при выполнении самого действия. Если confirm_key отсутсвует или не совпадает — действие отклоняется. Вся проблема заключается в том, что сохраняется только одно значение confirm_key для каждого пользователя. То есть при открытии новой страницы подтверждения, старый ключ подтверждения просто заменяется новым.
Время от времени разные пользователи писали об этой проблеме в багтрекер phpBB 3, однако разработчики последнего считают, что это полезная фича. Где-то я уже это слышал :) В phpBBex проблема решена просто — система сохраняет сколько угодно confirm_key и хранит их 15 минут.

Система предупреждений


Предупреждения
Администрация может выдавать три типа предупреждений: замечание, предупреждение и бан. Каждое предупреждение привязано к конкретному сообщению и имеет какой-то срок (кроме замечаний). Предупреждения и баны отображаются в минипрофиле в виде жёлтых и красных карточек. На данный момент все эти карточки носят лишь информационный характер. То есть, если выдать красную карточку (бан), само наказание для пользователя необходимо отдельно применить стандартными средствами форума. В следующих версиях будут созданы специальные группы, в которые система будет помещать пользователя при определённом количестве предупреждений или при бане, а для этих групп будут заданы ограниченные права.

Пользовательские настройки

  • Отключение обзора темы на странице полного ответа
  • Задание количества тем и количества сообщений на страницу (от 10 до 100)
  • Новые форматы даты, характерные для СНГ
  • Включение и выключение быстрого ответа и быстрых тем

Настройки администратора

  • Автоматическое ограничение на количество строк, картинок и ссылок в подписи
  • Право игнорировать ограничение времени редактирования сообщений
  • Задание ключевых слов сайта (meta keywords)
  • Редактирование блока внешних ссылок и уведомления об авторских правах
  • Запрет изменения пользователем стиля, часового пояса, языка
  • Автоматическая склейка подряд идущих сообщений от одного пользователя

Другое

  • В RSS при отсутствии темы у комментария подставляется тема всей ветки
  • Отображение русских URL в декодированном виде (например, «%D0%9D%D0%BE%D0%B3%D0%B0» будет отображаться как «Нога»)
  • Добавлены русские боты
  • Добавлена страница «правила форума» (пока что только русская версия), облегчён FAQ
  • При регистрации можно указать имя пользователя, содержащее только буквы, цифры, пробел, точку, дефис или знак подчёркивания
  • В комментариях по умолчанию не подставляется тема
  • В .htaccess настроено кэширование изображений, стилей и т.д.
  • Глобальные объявления отображаются на главной и привязаны к конкретному форуму, как и обычные объявления (решает массу проблем, например, с путём по сайту)
  • Фильтры списка пользователей (активные, не активные, все, без сообщений)
  • Подсчет количества тем, созданных пользователями
  • Вход по имени пользователя либо по email
  • Ведётся подсчёт количества созданных пользователем тем
  • Включён официальный Support Toolkit (доступен по адресу /stk/)
  • Обновлён набор смайликов в стиле phpBB 2, добавлены картинки для званий

Ограничения


Поскольку ресурсы на разработку и тестирование сильно ограничены, phpBBex ограничивается поддержкой русского и английского языков, базы данных MySQL и обновлённого стиля prosilver.

Установка и конвертация


Процесс установки не отличается от phpBB 3. Также поддерживается конвертация уже установленного phpBB 3 в phpBBex. Для этого необходимо на обновлённой до phpBB 3.0.9 базе выполнить скрипт install/phpbbex.sql.
Последнюю версию проекта вы можете скачать на страничке phpbbex.googlecode.com.

Присоединяйтесь к проекту!


Если вам нравится направление проделанной работы, вы можете создать клон репозитория Mercurial, и начать делать какие-то свои изменения. Если вы никогда не работали с Mercurial, рекомендую прочитать статью «Hg Init». Скорее всего, когда вы начнёте пользоваться Mercurial, вы как и я не будете понимать, как вы жили без него раньше :)

ToDo


  • Автоматическая смена основной группы для пользователя по заданным правилам с учётом количества предупреждений, наличия «бана» (красная карточка), количества тем и сообщений
  • Право использовать HTML в комментариях (для администратора и, например, для робота, который создаёт темы на форуме для каждой записи в блоге)
  • Вместо оставшихся всплывающих окон использовать splash
  • Сократить тексты уведомлений, чтобы при уведомлении по Jabber не приходили очень длинные сообщения
  • Автоматический пересчёт счётчиков сообщений и тем
  • Автоматическое удаление пользователей с 0 сообщениями, не посещавших форум определённое время (опционально)
  • Сокрытие некоторых разделов из RSS
  • Больше актуальной информации в логах (тексты удаляемых сообщений и т.д.)
  • Отложенные действия (тема будет удалена через сутки, тема будет перемещена через 2 часа и т.д.)
  • Активно использовать AJAX там, где это повысит удобство для пользователя

Спасибо за внимание. Буду рад прочитать ваши замечания и предложения!
+56
13.4k 84
Support the author
Comments 53
Top of the day