Seditio 185

Seditio 185 — это релиз, в котором движок получил чёткую и последовательную модульную архитектуру. Ядро теперь явно различает полноценные модули, их отдельные части и обычные плагины; пути к файлам модулей хранятся в базе и реально используются при загрузке кода; значительная часть функциональности, которая раньше была «вшита» в ядро, вынесена в подключаемые расширения. Всё это сделано не ради красоты архитектуры, а чтобы сайтом было проще управлять, дополнять и обновлять.


Архитектура ядра и база данных

Динамические пути модулей. В таблице sed_core появились два новых поля: ct_path — путь к каталогу модуля относительно корня сайта, и ct_admin — признак того, что модуль относится к административному сегменту. ct_path — это не просто пометка: именно по этому полю движок в system/common.php находит и подключает API-файл модуля (inc/{code}.functions.php) при каждом запросе. ct_admin используется в административной панели для построения меню модулей и маршрутизации внутри админки. При обновлении с 180 эти поля заполняются автоматически через патч и апгрейд-скрипт.

Чёткое разделение модулей и плагинов. В таблицу sed_plugins добавлены: pl_module — признак того, что строка относится к части модуля, а не к отдельному плагину; pl_version — версия расширения; pl_dependencies — JSON с зависимостями (какие модули и плагины должны быть активны); pl_lock — запрет на отключение критичных частей. На основе этих данных работают функции sed_module_active(), sed_module_part_active(), sed_plug_active() и разбор зависимостей — единый слой проверки того, что нужная часть системы реально доступна, прежде чем использовать её.

Производительность. На sed_config добавлен индекс по (config_owner, config_cat) — это ускоряет выборку настроек при каждом запросе к сайту. Аналогичный индекс добавлен на sed_plugins по полю pl_module.

Меню. В таблице меню появилось поле menu_cssclass: CSS-класс пункта меню теперь задаётся прямо из админки, без правки шаблонов.

Патчи версий. Функция sed_apply_patches() в functions.php последовательно применяет файлы из system/upgrade/patch/ при переходе между версиями — если в datas/config.php включён $cfg['patchmode']. Для перехода 180 → 185 это patch_180_185_01.php: новые столбцы, индексы, первичное заполнение ct_path и ct_admin.

Кэш. Внутренний кэш теперь восстанавливается до подключения API модулей — это значит, что закешированные структуры (например, списки секций форума) уже доступны в памяти, когда к ним обращаются файлы функций. Отдельно в апгрейд-скрипте: поле c_value в таблице кэша расширяется до MEDIUMTEXT, чтобы в неё помещались объёмные сериализованные блоки. После паузы или включения модуля автоматически пересобираются правила ЧПУ и сбрасывается кэш.

Маршрутизация. Старые ссылки вида module=list автоматически перенаправляются на module=page — отдельная точка входа для списков устранена, они объединены с модулем страниц.


Администрирование и конфигурация

Настройки модулей в конфигурации (owner=module) работают по тем же правилам, что и настройки ядра: есть загрузка языков через sed_langfile(), сброс к умолчаниям из *.setup.php и добавление в БД отсутствующих ключей конфигурации из файла установки — удобно после обновления, если в новой версии модуля появились новые опции.

Управление модулями стало точнее: пауза и включение (sed_module_pause()), при необходимости — блокировка полной паузы через ct_lock (задаётся в *.setup.php полем Lock_module). Отдельные части модуля можно включать и отключать независимо — если конкретная часть не помечена pl_lock.

Модуль пользователей — особый случай. Он отмечен Lock_module=1: его нельзя деинсталлировать и нельзя целиком поставить на паузу. Зато отдельные некритичные части модуля переключаются. Часть авторизации (users.auth) дополнительно помечена Lock=1 — она не отключается никогда, чтобы вход и контроль прав всегда оставались рабочими.

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


Плагины: что вынесено из монолита

  • RSS и XML sitemap стали отдельными плагинами с собственными *.setup.php и конфигурацией: можно выборочно включать ленты по типам контента (страницы, комментарии, форумы), настраивать лимиты, приоритеты и changefreq для карты сайта.
  • Комментарии — плагин с деревом ответов: настраивается максимальная глубина вложенности и лимит веток на страницу, оптимизированы SQL-выборки и шаблоны.
  • Теги — полноценная подсистема: работает для страниц и форумов, есть облако с сортировкой и лимитами, автодополнение при вводе, вывод облака на главной, в категориях, под материалом и в форуме, параметры noindex для страницы поиска по тегам.
  • Корзина (trashcan) — логика вынесена в плагин, связанные функции убраны из ядра.
  • Рейтинги, Captcha, thanks и ряд других расширений обновлены под общую модель хуков, включая хуки на удаление страниц, опросов и другого контента — чтобы внешние расширения корректно реагировали на события ядра.
  • Языковые файлы плагинов подключаются единообразно через sed_langfile() — меньше дублирования путей.

Модули контента и форумов

  • Страницы (page): улучшены фильтры и сортировки в менеджере, поддержка readmore в листингах, доработаны шаблоны, SEO/мета, версия для печати; аккуратная обработка хвостового слэша в URL страниц.
  • Форумы: настраиваемая максимальная глубина вложенности подфорумов (maxforumdepth), теги в темах, доработки шаблонов, оптимизация работы со списками (батч-обработка тегов, хуки в листингах).
  • PFS (личная файловая зона): добавлена поддержка аудиофайлов.
  • Медиа: более единый подход к генерации и выводу миниатюр в разных модулях.

Пользователи, безопасность и формы

  • Регистрация и профиль: строгая проверка формата email при регистрации и изменении, корректная работа настройки useremailchange, улучшена обработка дополнительных полей анкеты.
  • Пароли: подсказки по надёжности пароля при вводе; новая опция strictpasschange в настройках модуля — требует подтверждения текущего пароля перед установкой нового.
  • Безопасность: нормализация IP-адресов в банлистах, CSRF-токен в метатегах страницы, доработки проверки referer в критичных точках.
  • Даты: формат d.m.Y приведён к единому виду в настройках и выводе.

Интерфейс, скины и активы

  • jQuery 1.x удалён из дистрибутива как устаревшая тяжёлая зависимость; логика автодополнения перенесена в общий app.js.
  • Доработки JS и CSS в административной панели и фронтенде: приоритеты подключения CSS, улучшения загрузчика файлов (uploader, drag-and-drop), окружение CKEditor.
  • Обновлены шаблоны форумов, страниц, опросов, меню (с учётом menu_cssclass), административных инструментов syscheck и skineditor.

Обновление с Seditio 180

  1. Сделайте резервную копию базы данных и каталога datas/ (включая datas/config.php).
  2. В админке отключите плагины — включать будете потом по одному, проверяя сайт.
  3. Замените файлы движка: при чистой установке удалите всё кроме datas/, залейте архив 185. Кастомные скины в skins/ и правки в plugins/ — сохраните отдельно заранее, они не в datas/.
  4. В datas/config.php выставьте $cfg['patchmode'] = TRUE. Это нужно для sed_apply_patches(): патч patch_180_185_01.php добавит новые столбцы, индексы и заполнит пути модулей. Редактировать system/functions.php для этого не нужно.
  5. Откройте сайт, войдите как администратор, перейдите в Admin → Upgrade и запустите апгрейд базы 180 → 185. Скрипт последовательно обработает таблицы: кэш, форумы, комментарии, меню, справочники, пути модулей и связанные данные.
  6. После успешного апгрейда очистите кэш, проверьте активные модули и плагины (особенно RSS, Sitemap, Comments, Tags, Trashcan), включите расширения.
  7. Проверьте скины: перенос списков на module=page, новые блоки тегов и комментариев могут потребовать правок в TPL.

После стабилизации patchmode можно вернуть в FALSE.


Итог

Seditio 185 выстраивает последовательную связку ядро ↔ модули ↔ плагины: каждый уровень теперь имеет явное место в БД, понятные правила загрузки и контроль зависимостей. Крупные возможности — RSS, sitemap, комментарии, теги, корзина — живут как самостоятельные расширения. Форумы, страницы и пользовательский модуль получили точечные улучшения. Переход с 180 поддержан через patchmode и Admin → Upgrade в панели.

Download : Seditio 185
Size: 5712KB, downloaded 17 times

Оценка:
(0.00)

Пока комментариев нет