Программист, реверс-инженер
0,0
рейтинг
9 октября 2011 в 21:07

Разработка → 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 там, где это повысит удобство для пользователя

Спасибо за внимание. Буду рад прочитать ваши замечания и предложения!
Евгений Врублевский @VEG
карма
351,0
рейтинг 0,0
Программист, реверс-инженер
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (53)

  • +28
    Я один в названии сайта города slutsk.net выделяю в отдельное слово первые 4 буквы?.. Да, пора лечиться от извращенства…
    • +6
      Наверное, Вы один. Слуцк — довольно известный город в Беларуси.
      P.S. Привет из Минска.
    • +14
      я даже первые 5 выделил :)
  • +2
    ВВех, непъеменна ввъех, батенька.

    Что там с безопасностью по сравнению с оригиналом?
    • 0
      В целом код написан в духе phpBB 3, ничего нового изобретено не было. Все изменения зафиксированы в репозитории, любой желающий может проанализировать все изменения, и сделать для вывод.
      Самому свой код хвалить неприлично как-то :)
      • +1
        Но безопасность улучшена то? Или наоборот возможны серьезные дыры?
        • +2
          В самом phpBB 3.x с безопасностью ещё не было найдено серьёзных проблем, то есть улучшать по этому параметру некуда. Тот код, что изменял и дописывал, я внимательно перепроверял, так что проблем быть не должно.
          • 0
            Понял, но всегда есть что улучшать)
  • +5
    Работаю с phpbb3 — 3 года
    Со своего опыта могу вам сказать, вы провели великую работу! Дочитав пост до конца, я уж было подумал что вот она — вышла новая, настоящая версия phpbb

    За последние пол года я переоценил работу форума и понял, что лучше переходить на платное. Да опен сорс, да можно дописывать — но результат как ресурс «на коленке»

    Когда же я все же переборю себя и съеду — не знаю…

    Автор еще раз спасибо! Отличная работа!
    • 0
      phpbb была первой системой, которую я пилил напильником. Благо жизнь расположила все так, что больше я с этим чудовищем не работал. А из бесплатного я отдаю предпочтение SMF и vanilla
      • 0
        Вот и я пилил, пилю и думаю пока еще пилить буду :(
        partygorsk.com
        • 0
          Довольно не плохо уже запили ;)
          • +1
            У автора поста напильник работает лучше. Я уже пилил код 2 раза и 2 раза обновлялся до новой версии. Теперь у меня боязнь пилить код… По закону подлости обновление выйдет через 2-3 дня после окончания доработок.
            А дальше, эта песня хороша, начинай сначала
          • 0
            Запили?..
            • 0
              опечатался
        • +1
          По ходу, вам бы идеально подошла ванилла, пилить бы потребовалось самую малость.
  • +2
    Голосование можно было сделать на аяксе. Я уже молчу про быстрый ответ и правку поста(моды есть). Ну и добавление в закладки и подписку тоже можно сделать на аяксе.

    Также я бы посоветовал отображать кто за что проголосовал только после того как сам проголосуешь в опросе, ну и все ники вынес бы в скрытый блок(если будет 100-200 и более проголосовавших, будет криво смотреться).

    Ещё кнопку «Ответить» можно убрать, ведь формы расширенного и быстрого ответа ничем не отличаются.

    Изображения во вложениях можно сделать немного меньше, а их просмотр реализовать при помощи лайтбокса или другого подобного плагина.

    И еще там цитирование неработает)
    • 0
      Спасибо за предложения. Цитирование должно работать. Какой у вас браузер? Для цитирования необходимо выделить текст, после чего нажать кнопка «Цитата».
      • +1
        Упс, мой косяк, не проверял цитирование таким образом. Наверное надо сделать алерт что текст не выбран
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Они просто спрятаны в шаблоне минипрофиля. В профиле эта информация отображается. Если вы хотите, чтобы эти цифры были и в минипрофиле, можно легко вернуть обратно, однако размер минипрофиля солидно вырастет. Мне кажется, что за этой информацией всё-таки можно сходить в профиль.
      • 0
        не соглашусь, обычно по дате регистрации и количеству сообщений можно примерно сориентироввться с кем имеешь дело.

        когда общение идет на местечковом форуме и все друг друга знают то да, это лишнее. а если форум технический и там хотя бы тысяч 20 участников — по этим данным уже можно составить первое мнение о человеке.

        еще смайлики в стиле двойки мне кажутся спорным решением. у тройки очень стильные самобытные смайлы, всегда глаз радуется когда вставляют их в какой нибудь пост на форуме на пхпбб3
  • 0
    В коды использованных и модернизированных модов не отправили правки?

    По большому счету изменения в шаблоне и модах не вижу что бы сам движок форума был затронут (по имениям в коде пробежался).

    Что бы было меньше геморроя с переходом на новые версии PhpBB все улучшения лучше выполнять в виде авто-модов.
    • 0
      Ох знал бы я об этом раньше :)
      • 0
        Я на этом уже обжегся и теперь авто-модами оформляю все что меняю и допиливаю в PphpBB
    • 0
      Исправления некоторых ошибок использованных модов ранее высылал их авторам, но они так и остались в виде сообщений в ветках поддержки этих модов. К сожалению, многие хорошие моды заброшены авторами.

      Какие-то изменения и в базовом коде phpBB были проделаны. Например, важные объявления по умолчанию не привязаны ни к одному из форумов, из-за чего в пути и других местах отображается первый попавшийся форум. Я это поведение вырезал, и весь сопутствующий код удалил. Сами разработчики phpBB обещают сделать это в phpBB 3.1, но сколько можно ждать :)

      Обновление базового кода на новые версии помогает делать Mercurial. При переходе с phpBB 3.0.8 на phpBB 3.0.9 с разрешением всех конфликтов и поверхностным тестированием я управился где-то за час, хотя изменений было очень много.
  • 0
    А как с нагрузкой, были ли какие-то изменения, связанные с оптимизацией использования CPU, базы данных? В посте нашел только «В .htaccess настроено кэширование изображений, стилей и т.д.».
    • 0
      Нагрузка должна остаться на прежнем уровне, кардинально меняющих внутренности изменений проделано не было.
  • 0
    Я когда на phpbbguru тусовался (ещё во времена рнрВВ 2.0.10) у меня была идея «форкнуть» рнрВВ2
    Просто сделать движок на похожем скине, тоже в простеньком процедурном стиле, и совместимый по БД с рнрВВ2 (только чтоб код работал нормально с новыми версиями РНР)

    Идею кстати так и не отбрасывал, но и начинать так и не стал (и вряд ли уже стану)
  • +1
    Для меня идеал форума это softwaremaniacs. А на php привлекает vanilla.
    А phpBB для меня уже винтаж.
  • +1
    Я уж подумал архитектуру phpBB перелопатили. По опыту работы могу сказать что форум хоть использует ООП, но использует его не совсем правильно, есть очень много классов которые содержат в себе много мало связанных между собой функций, про инкапсуляцию я вообще молчу, так же рядом лежат файлы с такими же функциями но уже без обёртки в виде класса, а файлы могут называться вида functions_content.php и functions_template.php, в первом куча функций, во втором 1 класс template_compile (где логика?). Есть даже классы содержащие в себе 1 функцию(!). Роутинга как такового там не существует, содаём фаил и давай катать дублированный код как в других файлах. Обновление при установленных модификациях сущий ад, бывает что модификация очень сильно меняет структуру файла, что делает не возможным его обновление. Но не смотря на всё это, у него хорошая система кеширования, что делает его довольно быстрым.

    Извините, накипело, после прочтения Макконелла, меня просто вывернуло от такого кода.

    А автор молодец, столько кода перелопатить, я бы даже сказал не очень простого кода.
    • –1
      Была идея прикрутить кое-какие архитектурные полезности к phpBB: полноценный роутер, конструктор запросов в духе Kohana, Smarty в качестве шаблонизатора. Однако, сообщество плохо отреагировало на столь кардинальные изменения из-за полной потери совместимости с существующими модами. Если найдутся единомышленники — возможно всё :)
      • +1
        Проще тогда с нуля написать свой двиг форума, чем пытаться накрутить костылей.
  • 0
    Было бы интересно увидеть список модов, использованных в сборке.
    • +1
      Использовались части исходных кодов следующих модов:
      Advanced Quick Reply (почти полностью переделано, исправлены все известные проблемы)
      Show first post on every page
      Posts auto merging (добавлена возможность игнорировать склейку, исправлены ошибки в уведомлениях)
      Update attachment (полностью новый интерфейс, исправлен код)
      User topics count (более сильная интеграция с официальным кодом)
      Images count limit
      Show poll voters (исправлена ошибка отображения большого количества проголосовавших)
      Login via E-Mail (значительно переписано)
      Override User Settings
      Плюс ещё несколько модов, которые я писал специально для phpBBex, но не поленился оформить в виде отдельных модов. Может быть ещё что-то забыл.
  • 0
    0. Молодец, спасибо за работу тебе.
    1. Не хватает мода ссылок а-ля ЧПУ (mod_rewrite).
    2. Если голосование можно сделать анонимным, то несомненно плюс.
    3. Обрати внимание на смайлики. Есть достойная альтернатива стандартным.
    4. Очень низкое качество картинок в главном (выпадающем меню). Обрати внимание на иконки «FAQ» и «Правила форума».
    5. Я — гость. Мне понравилась тема и я жму ссылку «Отправить другу». Получаю ответ: «Вам не разрешено посылать email этому пользователю.». Расшифруй послание :)
    • –1
      1. Рассматривается вариант интеграции специального роутера для этих целей.
      2. Конечно можно :) Для этого есть соответствующая галочка.
      4. Я использовал иконки из набора famfamfam silk icons, возможно немного перестарался со сжатием. Постараюсь переделать.
      5. Так phpBB 3 сообщает, что гости не могут отсылать письма :) Наверное, стоит вообще спрятать эту ссылку для гостей. Всё равно сейчас функцию «рассказать другу» лучше выполняют социальные кнопки.

      Спасибо за отзыв.
  • 0
    Кстати, могу предложить сотрудничество с проектом phpBB Constructor (анонс на Хабре). Я был бы рад включить многие из парок из вашей сборки в виде модов в констурктор, а вы получите инструмент для пересборки дистрибутива вашей сборки, извиняюсь за тавтологию :-)
    • 0
      Я раньше для некоторых своих модификаций создавал MODX файлы. Однако, на это у меня уходило слишком много времени :( Поэтому я решил ограничиться просто модифицированной версией phpBB под управлением системы контроля версий, чтобы все изменения можно было отследить.
      • 0
        За последнее время было сделано немало вещей, облегчающих эту задачу. Как минимум есть MODX Generator для черновой генерации инструкции и MODX Creator для ручной доводки. Последний, кстати, имеет и офффлайн-версию, которой я люблю пользоваться :-)
  • 0
    Жду, когда уже начнут делать четвертый phpBB на Symfony2. Обязательно поучаствую в разработке :)
  • 0
    Если кто-то решит воспользоваться phpBBex для своих форумов, было бы приятно увидеть ссылку на ваш проект :)
    Например, phpBBex без изменений используется на vorbis.org.ru/
  • 0
    А его можно подружить с Вордпресс? Ну, чтобы учетная запись юзера на сайте и на форуме была единой?
    • 0
      Как-то можно, но, к сожалению, таким вопросом я не занимался :(
  • 0
    Небольшое обновление (версия 1.0.1). Исправлены недочёты в установщике (из-за которых размер логотипа неправильный по умолчанию), отображение кнопки «отправить другу» для гостей, а также несколько php notice в отладочном режиме.
    Скачать можно на страничке проекта: code.google.com/p/phpbbex/
  • 0
    Ребят, а что за шрифт в логотипе PHP BB3?
  • 0
    Вышла обновлённая версия phpBBex v1.0.3

    — Отображение последних активных тем на главной (включается в «функциях конференции» администраторского раздела)
    — Автоматическое уменьшение больших изображений, вставленных в сообщения BB-кодом img
    — Более SEO оптимизированные заголовки
    — Поддержка URL с не латинскими буквами
    — Исправления стиля для широкоформатных мониторов
    — UMIL 1.0.4 в комплекте
    — Проверка версии PHP (необходимо не менее 5.2, при необходимости работы на более старых версиях PHP можно попробовать отключить проверку)
    — Другие незначительные изменения

    Для обновления достаточно заменить все файлы любой предыдущей версии phpBBex.

    Обновление можно скачать на страничке проекта phpBBex.
  • 0
    Ещё одно небольшое обновление.

    phpBBex v1.0.4
    — phpBBex совместим с инсталляционными скриптами UMIL (должны устанавливаться AutoMOD, Thanks for post и др.)
    — В декабре, январе и феврале отображается новогодняя версия градиента в шапке
    — В отладочном режиме выводятся все ошибки и предупреждения (не для использования на реальных сайтах!)

    Для обновления достаточно заменить все файлы любой версии phpBBex. Можно скачать на страничке phpBBex.
  • 0
    phpBBex v1.0.5
    — Кнопка Google Plus, все социальные кнопки открывают новые окна
    — В колонке «последняя тема» всегда корректно отображаются кавычки
    — Более совместимый .htaccess с различными версиями Apache
    — Право игнорирования времени редактирования не устанавливается по умолчанию при установке

    phpBBex v1.0.6
    — Исправлена проблема в .htaccess файле, из-за которой на некоторых хостингах не загружались стили админки (по ошибке использовался перенос строки Macintosh)
    — В админке появились настройки стиля (в разделе «Настройки конференции»): отображать ли в шапке название и описание сайта, вставлять ли код счётчика LiveInternet, вставлять ли код Google Analytics.

    Для обновления достаточно заменить все файлы любой предыдущей версии phpBBex и сбросить кэш в админке.
  • 0
    Новая статья на Хабре о phpBBex: habrahabr.ru/post/142373/
  • 0
    К слову, вышла новая версия 1.3.0. Очень много нововведений.
    Подробнее: phpbbex.com/forum/viewtopic.php?f=2&t=38

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