Table of Contents

Базова структура Oxwall

Код Oxwall состоит из следующих основных частей:

Ядро

Ядро располагается в папке ow_core. Представляет собой ядро фреймворка.

Ядро реализует следующие функции: управление приложением, механизм кэша, работа с БД, MVC модель, роутинг url, система событий, конструктор форм, отображение html страниц, управление темами, управление плагинами, сессии, очередь рассылки емейл, лог.

Также ядро содержит интерфейсы для пользовательских классов:

Системные плагины

В Oxwall 2 системных плагина:

Системные плагины располагаются в папке ow_system_plugins. Системные плагины совместно с ядром реализуют базовый функционал CMS.

Базовый плагин

Плагин «Базовый плагин» находится в папке “ow_system_plugins/base”.

Базовый плагин реализует функционал, который можно условно разбить на следующие группы:

Плагин хранит данные в таблицах с префиксом ow_base_.

Панель администратора

Плагин «Панель администратора» находится в папке ow_system_plugins/admin.

Панель администратора предназначена для администратора и реализует визуальное представление для управления объектами базового плагина.

Отладка

В ow_includes/config.php можно включить флаги:

1. OW_DEBUG_MODE – включение показа сообщений об ошибках и исключениях php.

Настройка реакции на ошибки и исключения производится модификацией “ow_core/error_manager.php”.

По умолчанию, в режиме отладки в случае исключения выполнение прекращается.

2. OW_DEV_MODE – отключение кэша страниц и запросов в БД. Сильно замедляет время генерации страниц.

3. OW_PROFILER_ENABLE - включение отладочной панели.

Системные компоненты

Кэш в БД

Автоматически очищаемый кэш данных с поддержкой тегов в таблицах base_cache и base_cache_tag.

OW::getCacheManager()->save(value, key, tags, cacheLifeTime);
OW::getCacheManager()->load(key);
OW::getCacheManager()->clean(tags); - сброс кэша с установленными тегами

Кэширование запросов к БД:

При выполнении любого запроса на получение данных из БД есть возможность указать время кэширования результата запроса и теги. Кэш удалится автоматически по истечении заданного времени или при явном вызове функции clean(tags).

findById(id, cacheLifeTime, tags); - запрос с кэшированием результата
OW::getCacheManager()->clean(tags); - сброс кэша

Лог в БД

Запись лога в таблицу ow_base_log

$logger = OW::getLogger('type');
$logger->addEntry(‘message’, ‘key’);
$logger->writeLog();

Кэш в БД без тегов

Автоматически очищаемый кэш данных в таблице ow_base_db_cache.

OW::getCacheService()->set(key, value, lifeTimeSeconds);
OW::getCacheService()->get(key);

Утилитные классы

События

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

Отправка:

$event = new OW_Event('base_add_comment',…); // trigger event comment add
OW::getEventManager()->trigger($event); 

Подписка на получение и обработка:

function blogs_on_notify( OW_Event $event ){ обработка };
OW::getEventManager()->bind('base_add_comment', 'blogs_on_notify');

Используется для следующих задач:

1. Получение уведомлений и реакции на события

2. Интеграция в элементы любого рода. Отправитель сообщения запрашивает данные у всех. Любой желающий подписывается на сообщение и добавляет/меняет данные

3. Отправка команд плагинам

4. Запрос информации у плагинов

Лог событий отображается на отладочной панели.

Чтобы получить уведомление первым, надо указать приоритет: bind(…,…, 0). По умолчанию, приоритет – 1000.

Чтобы не дать возможность получить уведомление другим получателям, надо в обработчике вернуть false или вызвать

$event->stopPropagation().

Разработка визуальной части

В Oxwall 3 типа визуальных объектов:

Для построения визуальной части используется шаблонизатор Smarty. Документация по Smarty

Контроллер

Контроллер отвечает за формирование одной или нескольких страниц целиком.

В Oxwall 2 основных типа контроллеров:

Компонент

Компонент отвечает за формирование небольшого блока на страницах и обработку событий. Он самостоятельно формирует данные по переданным параметрам.

В Oxwall 2 основных типа компонентов:

Компонент может включать в себя другие компоненты и декораторы.

Декоратор

Декоратор – это html файл, отображающий переданные данные. Декоратор является функцией Smarty и может находится в любом шаблоне, в т.ч. в другом декораторе. Декораторы упрощают код представления, убирают дублирование кода и обеспечивают единообразное отображение повторяющихся данных на разных страницах.

Например, декоратор avatar_item используется для отображения аватара пользователя, user_list_item - для отображения аватара и имени пользователя.

Drag-And-Drop

Для того, чтобы дать возможность пользователю менять расположение виджетов или других элементов на странице, используются классы BASE_CTRL_ComponentPanel, BASE_CMP_DragAndDropEntityPanel, BASE_CMP_DragAndDropIndex, ADMIN_CTRL_Components, ADMIN_CMP_DragAndDropAdminPanel.

Основные компоненты сайта

Некоторые элементы, используемые для создания визуальных представлений

Детальное описание со скриншотами здесь:

Прикладные компоненты:

OW::getNavigation()->addMenuItem – добавить пункт в главное меню.
Note: This documentation was provided by our contributor Maxim . Original instructions can be found here
Note: Данная документация была предоставлена автором Maxim . Оригинал документации доступенздесь