Плагин «Хранилище настроек (Config Engine)»
Плагин представляет возможности для автоматического сохранения конфига плагина в БД. Больше нет необходимости редактировать конфиги плагинов вручную по фтп — вам нужно только сделать интерфейс для их редактирования, хранение настроек возьмет на себя этот плагин.
Часто при разработках плагинов есть необходимость сохранить в базе некоторое количество простой информации и приходится каждый раз писать стандартную обвязку в виде модуля, сущности и маппера (и про кэш ещё не забыть) — это отвлекает от бизнес логики и требует времени на написание кода для хранения этой несложной информации.
Этот плагин как раз и решает такую задачу — сохранение конфигов ваших плагинов в БД, их автоматической загрузки при старте ядра (или ручной загрузки — в зависимости от настроек вашего плагина). Плагин предоставляет простой АПИ для плагинов в виде функций «Сохранить/Получить», оптимизирован и использует кэш при работе с БД. Редактирование самих настроек (конфига) вашего плагина ложится на ваши плечи.
Также плагин предоставляет хранение и получение данных из БД для вашего плагина по ключу. Отличие от функций хранения конфига в том, что эти данные хранятся отдельно и не попадают в конфиг вашего плагина и их получение из БД выполняется только по запросу вашего плагина.
Программный интерфейс (API)
Интерфейс плагина представляет 2 функции для управления конфигом вашего плагина и 5 функций для сохранения, получения и удаления произвольных данных по текстовому ключу.SaveMyConfig ($oPluginSomeClass, $iAutoLoad = 1)
Описание:
Сохранение конфига вашего плагина в БД.
Пример:
CE::SaveMyConfig ($this, false);
Параметры:
oPluginSomeClass всегда $this
iAutoLoad = 1, то при старте ядра плагин автоматически получает свои настройки и может использовать обычные Config::Get (), если же iAutoLoad = 0, то при старте настройки плагина не затрагиваются, конфиг соответствует оригинальному. В таком случае чтобы получить настройки нужно вызвать следующую функцию:
GetMyConfig ($oPluginSomeClass)
Описание:
Ручное получение конфига плагина из БД.
Пример:
CE::GetMyConfig ($this);
Параметры:
oPluginSomeClass всегда $this
SaveMyData ($oPluginSomeClass, $sKey, $aMixedData)
Описание:
Ручное сохранение данных в БД по текстовому ключу для вашего плагина, которые не заносятся в ваш конфиг.
Пример:
CE::SaveMyData ($this, 'my_settings', array (1, 5, 12, 'name' => 'dev'));
Параметры:
oPluginSomeClass всегда $this
sKey строковое значение ключа
aMixedData данные, которые необходимо сохранить в БД. Данные могут быть любого типа, кроме типа resource.
GetMyData ($oPluginSomeClass, $sKey)
Описание:
Ручное получение данных из БД по текстовому ключу для вашего плагина, которые не заносятся в ваш конфиг. Возвращает данные, если данные ещё небыли занесены — вернет false.
Пример:
$aMixed = CE::GetMyData ($this, 'my_settings');
Параметры:
oPluginSomeClass всегда $this
sKey строковое значение ключа
DeleteMyData ($oPluginSomeClass, $sKey)
Описание:
Ручное удаление данных из БД по текстовому ключу для вашего плагина.
Пример:
CE::DeleteMyData ($this, 'my_settings');
Параметры:
oPluginSomeClass всегда $this
sKey строковое значение ключа
GetMyDataByLike ($oPluginSomeClass, $sKey)
Описание:
Ручное получение данных из БД по началу текстового ключа для вашего плагина, которые не заносятся в ваш конфиг. Возвращает массив полученных данных, в котором каждый элемент также является массивом, где имя ключа хранится в pluginname, а данные в data.
Например, нужно получить все значения ключи которых начинаются на my_array_, т.е. my_array_1, my_array_2 и т.п. Нижеприведенный пример справится с этой задачей.
Пример:
$aMixed = CE::GetMyDataByLike ($this, 'my_array_');
Параметры:
oPluginSomeClass всегда $this
sKey строковое значение начала ключа
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.
Плагин доступен в каталоге.
9 комментариев
И как же приятно увидеть, что он является бесплатным ,)
У вашего и моего плагинов разные возможности. Этот плагин я давно уже хотел дописать. Про ваш я даже не вспомнил что такой есть (но я его видел, но что-то не задумался).
Различий много, например, в том, что данный плагин может хранить любые данные (напр., многомерные массивы) и делает это весьма просто (без сложных объявлений) и через АПИ, не предоставляя сам интерфейс для редактирования настроек — это возлагается на плечи автора плагина.
Но в первую очередь — он работает с конфигами плагинов в целом (интегрируясь), т.е. любой плагин который сегодня работает через конфиг можно легко перенести на работу с этим плагином просто добавив туда модуль редактирования своих настроек. Но нигде в других местах плагинов не нужно будет ничего менять. Весь код останется таким же.
Также обозначу про подачу материала: я написал полную справку по списку функций, а вы почему-то поленились это сделать (имя методов у вас есть, но списка параметров — нету и т.п.).
Раз вы говорите что прошел месяц после вашей публикации, то почему вы не сделали ни одного плагина на основе вашего АПИ? Создать оно, конечно, хорошо но нужно и показать что можно сделать на основе этого. Я сейчас дописываю ещё один плагин который использует АПИ этого плагина (CE).
З.Ы. Мой плагин под другой лицензией.
З.З.Ы. Я так и не понял: вы спрашиваете зачем я это писал или вы расстроились?
З.З.З.Ы. Почему вашего плагина нет в каталоге? Это весьма важно — в каталоге плагины проходят проверку и это дает какой-то вес доверия к нему т.к. ваш плагин (судя по АПИ) очень сильно привяжет плагины к себе.
А про различия, вы зря — их не так много.
Дело не в измерениях кое-чего, а в том, что проще было бы скрестить работы.
По поводу каталога — так вышло, что модерация затянулась из-за пропущенной галочки.
та и почему зря? я просто описал их.