Хранение произвольных данных в базе данных панели
Иногда, при написании плагинов возникает необходимость хранения дополнительных параметров для встроенных объектов. Для всех таблиц управляемых ispmanager можно добавлять дополнительные поля в таблицы БД без внесения изменений в код приложения. При этом, добавленные поля будут обрабатываться стандартными алгоритмами: будет отслеживаться наличие данного поля в таблице и его тип (при необходимости поле будет добавлено или изменен его тип), значения таких полей может быть изменено через форму редактирования или выведено в списке записей (для этого будет достаточно просто добавить соответствующее поле в метаданные).
Для того, чтобы добавить дополнительное поле в таблицу, нужно создать каталог /usr/local/mgr5/etc/sql/ispmgr.{имя_таблицы}.addon или /usr/local/mgr5/etc/sql/{имя_таблицы}.addon
Каждый файл в любом из этих каталогов описывает отдельное поле таблицы. Имя поля совпадает с именем файла. По умолчанию, будет создано поле типа string с максимально возможной длинной (VARCHAR(255)), но можно задать и другой тип данных, а так же определить значение по умолчанию, и параметры доступа. Пример файла:
type=string
size=40
access_read= registered
access_write=admin+
default=0.0.0.0type определяет тип поля. Возможные значения:
- string — строка. Параметр size задает максимальную длину ячейки, по умолчанию - 255
- int — целочисленное поле
- bool — булево значение вида on/off
- decimal — поле для хранения чисел с фиксированной запятой
- date — поле для хранения даты
- money — поле для хранения чисел с фиксированной запятой
- text — текстовое поле
- idn — поле для хранения интернационализированного доменного имени (IDN)
- long — целочисленное поле увеличенной длины
- datetime — поле для хранения времени с датой
access_read ограничивает доступ на чтение значения поля по уровням доступа пользователей. По умолчанию, поле доступно для всех пользователей.
access_write доступ на запись (аналогично access_read)
access устанавливает доступ на чтение и на запись и перекрывает настройки установленные через (access_read и access_write)
Подробнее об уровнях доступа — в статье Уровни доступа.
default устанавливает значение по умолчанию. Для установки значения NULL необходимо указывать параметр следующим образом:
default=nullПосле этого нужно очистить кэш и перезапустить панель:
rm -rf /usr/local/mgr5/var/.db.cache*
pkill core