API плагина Configengine

Разработка под LiveStreet CMS
Плагин представляет возможности для автоматического сохранения конфига плагина в БД. Больше нет необходимости редактировать конфиги плагинов вручную по фтп — вам нужно только сделать интерфейс для их редактирования, хранение настроек возьмет на себя этот плагин.

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

Этот плагин как раз и решает такую задачу — сохранение конфигов ваших плагинов в БД, их автоматической загрузки при старте ядра (или ручной загрузки — в зависимости от настроек вашего плагина). Плагин предоставляет простой АПИ для плагинов в виде функций «Сохранить/Получить», оптимизирован и использует кэш при работе с БД. Редактирование самих настроек (конфига) вашего плагина ложится на ваши плечи.

Также плагин предоставляет хранение и получение данных из БД для вашего плагина по ключу. Отличие от функций хранения конфига в том, что эти данные хранятся отдельно и не попадают в конфиг вашего плагина и их получение из БД выполняется только по запросу вашего плагина.

Программный интерфейс (API)
Интерфейс плагина представляет 2 функции для управления конфигом вашего плагина и 5 функций для сохранения, получения и удаления произвольных данных по текстовому ключу.

  1. SaveMyConfig ($oPluginSomeClass, $iAutoLoad = 1)
    Описание:
    Сохранение конфига вашего плагина в БД.

    Пример:
    CE::SaveMyConfig ($this, false);

    Параметры:
    oPluginSomeClass всегда $this
    iAutoLoad = 1, то при старте ядра плагин автоматически получает свои настройки и может использовать обычные Config::Get (), если же iAutoLoad = 0, то при старте настройки плагина не затрагиваются, конфиг соответствует оригинальному. В таком случае чтобы получить настройки нужно вызвать следующую функцию:

  2. GetMyConfig ($oPluginSomeClass)
    Описание:
    Ручное получение конфига плагина из БД.

    Пример:
    CE::GetMyConfig ($this);

    Параметры:
    oPluginSomeClass всегда $this

  3. SaveMyData ($oPluginSomeClass, $sKey, $aMixedData)
    Описание:
    Ручное сохранение данных в БД по текстовому ключу для вашего плагина, которые не заносятся в ваш конфиг.

    Пример:
    CE::SaveMyData ($this, 'my_settings', array (1, 5, 12, 'name' => 'dev'));

    Параметры:
    oPluginSomeClass всегда $this
    sKey строковое значение ключа
    aMixedData данные, которые необходимо сохранить в БД. Данные могут быть любого типа, кроме типа resource.

  4. GetMyData ($oPluginSomeClass, $sKey)
    Описание:
    Ручное получение данных из БД по текстовому ключу для вашего плагина, которые не заносятся в ваш конфиг. Возвращает данные, если данные ещё небыли занесены — вернет false.

    Пример:
    $aMixed = CE::GetMyData ($this, 'my_settings');

    Параметры:
    oPluginSomeClass всегда $this
    sKey строковое значение ключа

  5. DeleteMyData ($oPluginSomeClass, $sKey)
    Описание:
    Ручное удаление данных из БД по текстовому ключу для вашего плагина.

    Пример:
    CE::DeleteMyData ($this, 'my_settings');

    Параметры:
    oPluginSomeClass всегда $this
    sKey строковое значение ключа

  6. GetMyDataByLike ($oPluginSomeClass, $sKey)
    Описание:
    Ручное получение данных из БД по началу текстового ключа для вашего плагина, которые не заносятся в ваш конфиг. Возвращает массив полученных данных, в котором каждый элемент также является массивом, где имя ключа хранится в pluginname, а данные в data.
    Например, нужно получить все значения ключи которых начинаются на my_array_, т.е. my_array_1, my_array_2 и т.п. Нижеприведенный пример справится с этой задачей.

    Пример:
    $aMixed = CE::GetMyDataByLike ($this, 'my_array_');

    Параметры:
    oPluginSomeClass всегда $this
    sKey строковое значение начала ключа

  7. DeleteMyDataByLike ($oPluginSomeClass, $sKey)
    Описание:
    Ручное удаление данных из БД по началу текстового ключа для вашего плагина. Удаляет все записи, ключи которых начинаются по указанному. Например, нужно удалить все значения ключи которых начинаются на my_array_, т.е. my_array_1, my_array_2 и т.п. Нижеприведенный пример справится с этой задачей.

    Пример:
    CE::DeleteMyDataByLike ($this, 'my_array_');

    Параметры:
    oPluginSomeClass всегда $this
    sKey строковое значение начала ключа

Замечания / оптимизация
При сохранении в БД вашего конфига (использование функций № 1 и 2) важно помнить, что если какие-то ключи не нужны — их желательно сбрасывать стандартными средствами чтобы меньше хранить данных в БД:

Config::Set ('plugin.ИМЯ_ВАШЕГО_ПЛАГИНА.КЛЮЧ_ДЛЯ_УДАЛЕНИЯ', null);

Внесение необходимых значений в файл xml вашего плагина
Если ваш плагин использует ConfigEngine, то укажите в xml файле вашего плагина эту зависимость в соответствующих секциях (внимание на 4 строку):


  <requires>
    <livestreet>0.5</livestreet>
    <plugins>
      <plugin>configengine</plugin>
    </plugins>
  </requires>

чтобы сначала активированным был плагин ConfigEngine — это позволит избежать ошибок.

Скриншот простой админки

Так выглядит список плагинов, которые имеют конфиги либо хранят данные через этот плагин:



Лицензия
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)

При создании продуктов которые используют API плагина ConfigEngine, к документации (описанию) плагина должна быть добавлена текстовая информация:

Плагин использует хранилище ConfigEngine (http://livestreetcms.com/addons/view/380/) от PSNet (http://psnet.lookformp3.net/).

В случае если используется ввод текста для описания с возможностью вставки html кода, тогда следует делать ссылки:

Плагин использует хранилище ConfigEngine от PSNet.

РЕЗЮМЕ

Плагин доступен в каталоге.
0 комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.