Buga

Опци

создание и хранение служебной информации - опций

На любом сайте есть много служебной информации, настроек опций, данные плагинов, какая-то статистика, настройки конфигурации и тп.   В WordPress для этого отвели целую специальную таблицу wp_options, ну и соответственно к этой таблице идет много килобайт кода API.  В Буга CMS мы не будем выходит за рамки наших трех таблиц, для этого будем хранить отдельные опции в таблице metas  как метаполя атома, ну а поскольку метаполе должно быть привязано к атому то создадим  атом с типом options - этот атом назовем группа опций. 

Группа опций  - это атом с типом a_type = options, у каждой группы есть свое уникальное имя  a_name, повторы не допускаются.

Опция   - метаполе из таблицы metas. Каждая опция обязательно входит в какую-то группу опций  -привязано к атому. У каждой опции должно быть свое имя поле m_name.  В рамках группы имя должно быть уникальным, повторы также отслеживаются.  

Группа опций buga - используется по умолчанию.  Если вы пытаетесь создать, прочитать или изменить опцию без указания к какой группе она принадлежит, то по умолчанию будет использоваться группа buga. 

Функции  групп опций:

/*
проверяет существует ли группа опций (атом)
с именем  $a_name
если существует возвращает $a_id
*/
    function issetOptions($a_name)
    {    }

/*
получаем группу опций 
$a_name  имя группы (имя атома)
вернет ассоциативный массив опций (метаполя)
*/
    function getOptions( $a_name )
    {    }

/*
создает новую группу опций(атом)
$a_name - имя группы (имя атома)
$metas -  опции (мета поля) ассоциативный массив имя=>значение
$autoload - индикатор автозагрузки
вернет $a_id группы опций 
*/
    function newOptions( $a_name, $metas = [], $autoload = 0 )
    {    }

/*
сохраняет группу опций (атом)
$a_name - имя группы (имя атома)
$metas -  опции (мета поля) ассоциативный массив имя=>значение
вернет кол-во обновленных, добавленных полей    
*/
    function saveOptions( $a_name,  $metas )
    {    }
/*
удаляет группу опций (атом)
$a_name - имя группы (имя атома)
*/
    function deleteOptions( $a_name )
    {    }

Функции опций 

/*
проверяет существует ли опция
$m_name - имя опции (имя метаполя)
$a_name - имя группы опций по умолчанию 'buga' (имя атома)
вернет $m_id    id метпаоля!
*/
    function  issetOption( $m_name, $a_name = 'buga' )
    {    }

/*
возвращает опцию одну штуку
$m_name - имя опции (имя метаполя)
$a_name - имя группы опций по умолчанию 'buga' (имя атома)
вернет значение опции
*/
    function getOption( $m_name, $a_name = 'buga' )
    {    }

/*
создает одну новую опцию
$m_name - имя опции, имя мета поля
$value - значение опции
$a_name - имя группы опций ( имя атома ) по умолчанию используем 'buga'
*/

    function newOption( $m_name, $value, $a_name = 'buga' )
    {    }
/*
сохраняем одну опцию
$m_name - имя опции, имя мета поля
$value - значение опции
$a_name - имя группы опций ( имя атома ) по умолчанию используем 'buga'
*/
    function saveOption( $m_name, $value,  $a_name = 'buga' )
    {    }

/*
удаление одной опции (метаполя) 
$m_name - имя опции, имя мета поля
$a_name - имя группы опций ( имя атома ) по умолчанию используем 'buga'
*/
    function deleteOption($m_name, $a_name = 'buga')
    {    }