API Хранилищ

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

Класс Storage

Данный класс предназначен для работы с сущностью хранилищ. Располагается в lib/storage.php

Метод

Описание

add

Метод добавляет новое хранилище.

update

Метод изменяет параметры хранилища с ключом $storage_id.

delete

Метод удаляет хранилище с кодом $storage_id.

getList

Метод возвращает список хранилищ.

getById

Метод возвращает информацию по хранилищу с кодом $storage_id.

getUserAccess

Возвращает уровень доступа текущего пользователя к хранилищу.

isset_property

Возвращает true если свойство с кодом $property_id существует в объекте хранилища.

isset_lan

Возвращает true если для хранилища заданы значения свойств с языком $language_id

isset_elementAccess

Возвращает true если в объекте хранилища установлено управление уровнем доступа для элементов

isset_log

Возвращает true если в объекте хранилища включено логирование действий.

count_elements

Возвращает кол-во элементов в хранилище.

Метод add

\SIMAI\Storage\Storage::add(

array $data,

boolean $create_title_prop = true,

boolean $create_storage_url_prop = true,

boolean $create_section_url_prop = true,

boolean $create_item_url_prop = true,

);

Метод добавляет новое хранилище. Метод статический.

Добавление хранилища данным методом возможно только, если у пользователя уровень доступа по умолчанию не ниже, чем «Запись» (W). Уровень доступа по умолчанию для групп задается в настройках модуля хранилищ.

Перед добавлением хранилища вызываются обработчики события OnBeforeStorageAdd, из которых можно изменить значения полей или отменить добавление хранилища, вернув сообщение об ошибке. После добавления хранилища вызывается событие OnAfterStorageAdd.

Параметры:

Параметр

Описание

$data

Массив, содержащий значения полей хранилища вида Array("поле"=>"значение", ...).

Поле SITE_ID (привязки к сайтам) задается в виде массива кодов сайтов.

Поле ACCESS (доступ групп) задается в виде массива Array("ид группы"=>"уровень доступа D / R / W / X ", ...)

$create_title_prop

Создавать свойство заголовка для хранилища и его элементов (не обязательный параметр, по умолчанию - да)

$create_storage_url_prop

Создавать свойство хранилища для хранения шаблона ссылки хранилища (не обязательный параметр, по умолчанию - да)

$create_section_url_prop

Создавать свойство хранилища для хранения шаблона ссылки разделов (не обязательный параметр, по умолчанию - да)

$create_item_url_prop

Создавать свойство хранилища для хранения шаблона ссылки записей (не обязательный параметр, по умолчанию - да)

Возвращаемое значение:

Возвращается код добавленного хранилища (в случае успешного добавления) либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$storage_id = \SIMAI\Storage\Storage::add(

array(

'STORAGE_ID'=>'test_storage', // код хранилища (обязателен)

'ACTIVE'=>'Y', // активность хранилища

'SORT'=>'100', // показатель сортировки

'SITE_ID'=>array('s1'), // привязка к сайтам (обязательна)

'ACCESS'=>array('1'=>'X', '2'=>'R'), // уровень доступа групп

'ELEMENT_ACCESS'=>'N', // возможность раздельного доступа для элементов

'LOG'=>'N', // логирование действия хранилищ

)

);

Метод update

\SIMAI\Storage\Storage::update(

string $storage_id,

array $data,

);

Метод обновляет поля хранилища с кодом $storage_id. Метод статический.

Изменение хранилища данным методом возможно только, если у пользователя уровень доступа к хранилищу не ниже, чем «Запись» (W).

Перед изменением хранилища вызываются обработчики события OnBeforeStorageUpdate, из которых можно изменить значения полей или отменить изменение хранилища, вернув сообщение об ошибке. После изменения хранилища вызывается событие OnAfterStorageUpdate.

Параметры:

Параметр

Описание

$storage_id

Код обновляемого хранилища

$data

Массив, содержащий значения полей хранилища вида Array("поле"=>"значение", ...).

Поле SITE_ID (привязки к сайтам) задается в виде массива кодов сайтов.

Поле ACCESS (доступ групп) задается в виде массива Array("ид группы"=>"уровень доступа D / R / W / X ", ...)

Возвращаемое значение:

Возвращается true в случае успешного обновления либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$result = \SIMAI\Storage\Storage::update(

'test_storage', // код хранилища

array(

'ACTIVE'=>'Y', // активность хранилища

'SORT'=>'100', // показатель сортировки

'SITE_ID'=>array('s1'), // привязка к сайтам

'ACCESS'=>array('1'=>'X', '2'=>'R'), // уровень доступа групп

'ELEMENT_ACCESS'=>'N', // возможность раздельного доступа для элементов

'LOG'=>'N', // логирование действия хранилищ

)

);

Метод delete

\SIMAI\Storage\Storage::delete(

string $storage_id

);

Метод удаляет хранилище с кодом $storage_id. Метод статический.

Удаление хранилища данным методом возможно только, если у пользователя уровень доступа к хранилищу не ниже, чем «Запись» (W).

Перед удалением хранилища вызываются обработчики события OnBeforeStorageDelete, из которых можно изменить значения полей или отменить удаление хранилища, вернув сообщение об ошибке. После удаления хранилища вызывается событие OnAfterStorageDelete.

Параметры:

Параметр

Описание

$storage_id

Код удаляемого хранилища

Возвращаемое значение:

Возвращается true в случае успешного удаления либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$result = \SIMAI\Storage\Storage::delete(

'test_storage', // код хранилища

);

Метод getList

\SIMAI\Storage\Storage::getList(

array $params = array(),

boolean $check_sites = false,

boolean $check_access = false,

);

Метод возвращает объект Main\DB\Result, из которого можно получить список хранилищ. Метод статический.

Параметры:

Параметр

Описание

$params

array(

'select' => ... // имена полей, которые необходимо получить в результате

'filter' => ... // описание фильтра для WHERE и HAVING

'group' => ... // явное указание полей, по которым нужно группировать результат

'order' => ... // параметры сортировки

'limit' => ... // количество записей

'offset' => ... // смещение для limit

'runtime' => ... // динамически определенные поля

)

$check_sites

Если параметр $check_sites = true, то проверяется привязка хранилищ к текущему сайту. Не обязательный параметр, по умолчанию false.

$check_access

Если $check_access = true, то проверяется уровень доступа к хранилищам, для присутствия хранилищ в выборке нужен уровень доступа не ниже, чем «Чтение» (R). Не обязательный параметр, по умолчанию false.

Возвращаемое значение:

Возвращается объект Main\DB\Result, к которому можно применять методы fetch() и fetchAll().

Подробная информация по работе с объектом выборки D7 ORM находится по адресу: http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=5753&LESSON_PATH=3913.5062.5748.5063.5753

Примеры использования:

$res_storage = \SIMAI\Storage\Storage::getList(

array(

'filter' => array('ACTIVE' => 'Y'), // выбрать только активные

'order' => array('SORT' => 'asc'), // сортировать по показателю сортировки

),

false, // не проверять принадлежность к текущему сайту

true, // проверять права доступа к хранилищу

);

while ($storage_data = $res_storage->fetch())

{

print_r($storage_data);

}

Метод getById

\SIMAI\Storage\Storage::getByID(

string $storage_id

);

Метод возвращает объект Main\DB\Result, из которого можно получить информацию о хранилище. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища

Возвращаемое значение:

Возвращается объект Main\DB\Result, к которому можно применять методы fetch() и fetchAll().

Примеры использования:

$res_storage = \SIMAI\Storage\Storage::getById(

'test_storage' // код хранилища

);

if ($storage_data = $res_storage->fetch())

{

print_r($storage_data);

}

Метод getUserAccess

\SIMAI\Storage\Storage:: getUserAccess(

string $storage_id = false,

integer $for_user_id = false

);

Метод возвращает уровень доступа пользователя к хранилищу или уровень доступа пользователя по умолчанию, если хранилище не задано. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища. Не обязательный параметр. Если не задан или равен false, то проверяется доступ пользователя по умолчанию, который необходим, например, для создания хранилищ.

$for_user_id

Ид пользователя, для которого проверяется уровень доступа. Не обязательный параметр. Если не задан или равен false, то проверяется доступ текущего пользователя (или доступ для всех, если пользователь не авторизован).

Возвращаемое значение:

Возвращается доступ в виде буквенного обозначения (D/R/W/X).

Примеры использования:

$access = \SIMAI\Storage\Storage::getUserAccess(

'test_storage', // код хранилища

false // для текущего пользователя

);

Метод isset_property

\SIMAI\Storage\Storage::isset_property(

string $storage_id,

string $property_id

);

Метод проверяет для заданного хранилища существование свойства с идентификатором или символьным кодом $property_id. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

$property_id

Числовой или символьный код свойства.

Возвращаемое значение:

Возвращается true либо false.

Примеры использования:

$prop_exists = \SIMAI\Storage\Storage::isset_property(

'test_storage', // код хранилища

'TITLE' // код свойства

);

Метод isset_lan

\SIMAI\Storage\Storage::isset_lan(

string $storage_id,

string $language_id

);

Метод проверяет для заданного хранилища существование значений свойств, относящихся к данному языку. Проверяются только значения, относящиеся к самому хранилищу, а не его элементам. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

$language_id

Код языка (ru, en и т. д.)

Возвращаемое значение:

Возвращается true либо false.

Примеры использования:

$lan_exists = \SIMAI\Storage\Storage::isset_lan(

'test_storage', // код хранилища

'en' // код языка

);

Метод isset_elementAccess

\SIMAI\Storage\Storage::isset_elementAccess(

string $storage_id,

);

Метод проверяет для заданного хранилища возможность установки раздельного доступа для элементов. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

Возвращаемое значение:

Возвращается true либо false.

Примеры использования:

$elementAccess = \SIMAI\Storage\Storage::isset_elementAccess(

'test_storage', // код хранилища

);

Метод isset_log

\SIMAI\Storage\Storage::isset_log(

string $storage_id,

);

Метод проверяет для заданного хранилища, задано ли логирование действий. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

Возвращаемое значение:

Возвращается true либо false.

Примеры использования:

$storage_log = \SIMAI\Storage\Storage::isset_log(

'test_storage', // код хранилища

);

Метод count_elements

\SIMAI\Storage\Storage::count_elements(

string $storage_id,

$type = false

);

Метод количество элементов в заданном хранилище. Если задан тип (I или S), то подсчитывается только кол-во записей (или только кол-во разделов). Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

$type

Тип подсчитываемых элементов (I либо S). Не обязательный параметр. По умолчанию false – считать оба типа элементов.

Возвращаемое значение:

Возвращается целое число.

Примеры использования:

$storage_log = \SIMAI\Storage\Storage::isset_log(

'test_storage', // код хранилища

'I', // считать только записи

);

Класс Element

Данный класс предназначен для работы с сущностями элементов. Для каждого хранилища динамически создается своя собственная сущность элементов с именем sf_storage_(код хранилища)_element при вызове всех методов данного класса (а также некоторых методов других классов). Эти сущности, в отличие от большинства других, не находятся в пространстве имен SIMAI.

Располагается в lib/element.php

Метод

Описание

add

Метод добавляет новый элемент.

delete

Метод удаляет элемент с кодом $element_id.

update

Метод изменяет параметры элемента с ключом $element_id.

getList

Метод возвращает список элементов.

getById

Метод возвращает поля элемента с кодом $element_id.

getLanList

Метод возвращает список кодов языков (языковых версий) содержащихся в данных для элемента $element_id.

getAccess

Метод возвращает массив с правами для объекта элемента.

is_section

Метод возвращает true – если объект элемента является разделом и false – если элемент является записью.

isset_lan

Возвращает true если для элемента заданы значения свойств с языком $language_id.

tree_resort

Пересортировка разделов с учетом вложенности.

get_subsections_ids

Метод возвращает список подразделов для заданного раздела.

get_sections_chain

Метод возвращает цепочку вложенных разделов, к которым относится заданный элемент, начиная с первого уровня.

Метод add

\SIMAI\Storage\Element::add(

string $storage_id,

array $data,

);

Метод добавляет новый элемент хранилища. Метод статический.

Добавление элемента данным методом возможно только, если у пользователя уровень доступа к хранилищу не ниже, чем «Запись» (W).

Перед добавлением элемента вызываются обработчики события OnBeforeElementAdd, из которых можно изменить значения полей или отменить добавление элемента, вернув сообщение об ошибке. После добавления элемента вызывается событие OnAfterElementAdd.

Параметры:

Параметр

Описание

$storage_id

Код хранилища

$data

Массив, содержащий значения полей элемента вида Array("поле"=>"значение", ...).

Привязка к родительским разделам (PARENT_ID) задается в виде массива идов разделов либо единичного ида раздела. Множественная привязка возможна только для записей.

Поле ACCESS (доступ групп) имеет смысл задавать только для хранилищ с 'ELEMENT_ACCESS'='Y'. Это поле задается в виде массива Array("ид группы"=>"уровень доступа D / R / W / X ", ...)

Возвращаемое значение:

Возвращается код добавленного элемента (в случае успешного добавления) либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$item_id = \SIMAI\Storage\Element::add(

'test_storage', // код хранилища

array(

'ACTIVE'=>'Y', // активность элемента

'SORT'=>'100', // показатель сортировки

'TYPE'=>'I', // это запись, а не раздел

'PARENT_ID'=>array(11, 12), // привязки к род. разделам

)

);

$section_id = \SIMAI\Storage\Element::add(

'test_storage', // код хранилища

array(

'ACTIVE'=>'Y', // активность элемента

'SORT'=>'100', // показатель сортировки

'TYPE'=>'S', // это раздел

'PARENT_ID'=>11, // привязка к род. разделу

'ACCESS'=>array('1'=>'X', '2'=>'D', '3'=>'R'), // уровень доступа групп

)

);

Примечание:

После создания элемента и задания всех его свойств в большинстве случаев необходимо запустить методы \SIMAI\Storage\Property::UpdateStorageElementSorts и \SIMAI\Storage\Search::UpdateStorageElementSearch. Описания этих методов можно прочесть в разделах, посвященных классам Property и Search соотвественно.

Метод update

\SIMAI\Storage\Element::update(

string $storage_id,

integer $element_id,

array $data,

);

Метод обновляет поля элемента хранилища. Метод статический.

Обновление полей элемента данным методом возможно только, если у пользователя уровень доступа к элементу не ниже, чем «Запись» (W).

Перед обновлением элемента вызываются обработчики события OnBeforeElementUpdate, из которых можно изменить значения полей или отменить обновление элемента, вернув сообщение об ошибке. После обновления элемента вызывается событие OnAfterElementUpdate.

Параметры:

Параметр

Описание

$storage_id

Код хранилища

$element_id

Ид элемента

$data

Массив, содержащий значения полей элемента вида Array("поле"=>"значение", ...).

Привязка к родительским разделам (PARENT_ID) задается в виде массива идов разделов либо единичного ида раздела. Множественная привязка возможна только для записей.

Поле ACCESS (доступ групп) имеет смысл задавать только для хранилищ с 'ELEMENT_ACCESS'='Y'. Это поле задается в виде массива Array("ид группы"=>"уровень доступа D / R / W / X ", ...)

Возвращаемое значение:

Возвращается true (в случае успешного обновления) либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$res = \SIMAI\Storage\Element::update(

'test_storage', // код хранилища

8, // ид элемента

array(

'TYPE'=>'I', // это запись, а не раздел

'PARENT_ID'=>array(11, 12), // привязки к род. разделам

)

);

$res = \SIMAI\Storage\Element::update(

'test_storage', // код хранилища

19, // ид элемента

array(

'TYPE'=>'S', // это раздел

'PARENT_ID'=>11, // привязка к род. разделу

'ACCESS'=>array('1'=>'X', '2'=>'D', '3'=>'R'), // уровень доступа групп

)

);

Примечание:

Если изменения элемента сопровождаются изменением его свойств, в большинстве случаев после этого необходимо запустить методы \SIMAI\Storage\Property::UpdateStorageElementSorts и \SIMAI\Storage\Search::UpdateStorageElementSearch. Описания этих методов можно прочесть в разделах, посвященных классам Property и Search соотвественно.

Метод delete

\SIMAI\Storage\Element::delete(

string $storage_id,

integer $element_id,

);

Метод удаляет элемент хранилища. Метод статический.

Удаление элемента данным методом возможно только, если у пользователя уровень доступа к элементу не ниже, чем «Запись» (W).

Перед обновлением элемента вызываются обработчики события OnBeforeElementDelete, из которых можно изменить значения полей или отменить удаление элемента, вернув сообщение об ошибке. После обновления элемента вызывается событие OnAfterElementDelete.

Параметры:

Параметр

Описание

$storage_id

Код хранилища

$element_id

Ид элемента

Возвращаемое значение:

Возвращается true (в случае успешного удаления) либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$res = \SIMAI\Storage\Element::delete(

'test_storage', // код хранилища

8, // ид элемента

);

Метод getList

\SIMAI\Storage\Element::getList(

string $storage_id,

array $params = array(),

$prop_check = array(),

boolean $check_sites = false,

boolean $check_access = false,

string $sort_lang = LANGUAGE_ID

);

Метод возвращает объект Main\DB\Result, из которого можно получить список хранилищ. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища (единая выборка из разных хранилищ невозможна)

$params

array(

'select' => ... // имена полей, которые необходимо получить в результате

'filter' => ... // описание фильтра для WHERE и HAVING

'group' => ... // явное указание полей, по которым нужно группировать результат

'order' => ... // параметры сортировки

'limit' => ... // количество записей

'offset' => ... // смещение для limit

'runtime' => ... // динамически определенные поля

)

Допустима сортировка по свойствам:

'PROP_(код свойства)' => 'asc / desc'.

Для мультиязычных свойств сортировка будет происходить по языку, заданному параметром $sort_lang.

В фильтрах может быть использована сложная логика и операторы =,>,<,>=,<=,%.

Если нужно выбрать элементы, которые могут принадлежать к нескольким разделам, следует использовать фильтр вида:

'%PARENT_IDS' => array('-(ид раздела)-', ...).

Обратите внимание, что при фильтре по PARENT_IDS следует использовать операнд подстроки и «окаймлять» иды разделов символом «-».

Допустимо применять фильтр по значениям свойств в следующем виде:

'PROP_(код свойства).PROP_(код свойства)' => 'значение'

Обратите внимание на то, что PROP_(код свойства) повторяется дважды через точку.

Если нужно отфильтровать только по значениям свойства, принадлежащих к определенным языкам, то допустима такая конструкция:

'= PROP_(код свойства).LANGUAGE_ID' = array('ru', '')

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

$prop_check

Список кодов свойств, задействуемых в фильтрах данного запроса.

Этот параметр задействуется для создания дополнительных сущностей, опирающихся на таблицу свойств и присоединяемых к таблице элементов через INNER JOIN.

Создание таких сущностей резко замедляет работу запроса, поэтому следует задавать только действительно необходимые для фильтра свойства.

Не обязательный параметр, по умолчанию равен array().

$check_sites

Если параметр $check_sites = true, то проверяется привязка хранилища к текущему сайту. Не обязательный параметр, по умолчанию false.

$check_access

Если $check_access = true, то проверяется уровень доступа к элементам хранилища, для присутствия элементов в выборке нужен уровень доступа не ниже, чем «Чтение» (R). Не обязательный параметр, по умолчанию false.

$sort_lang

В случае сортировки выборки по значениям свойств, по какому языку производится сортировка. Не обязательный параметр, по умолчанию равен константе LANGUAGE_ID.

Возвращаемое значение:

Возвращается объект Main\DB\Result, к которому можно применять методы fetch() и fetchAll().

Подробная информация по работе с объектом выборки D7 ORM находится по адресу: http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=5753&LESSON_PATH=3913.5062.5748.5063.5753

Примеры использования:

$res_elements = \SIMAI\Storage\Element::getList(

'test_storage', // код хранилища

array(

'filter' => array(

'TYPE' => 'I', // выбрать только записи

'%PARENT_IDS' => array('-4-', '-5-'), // выбрать только принадлежащие к разделам с идами 4 и 5

),

'order' => array(

'SORT' => 'asc', // сортировать по показателю сортировки

),

'select' => array(

'ELEMENT_ID',

'ACTIVE',

// в выборке только поля ида и активности

),

),

// остальные параметры по умолчанию

);

while ($el_data = $res_elements ->fetch())

{

print_r($el_data);

}

$res_elements = \SIMAI\Storage\Element::getList(

'test_storage', // код хранилища

array(

'filter' => array(

'ACTIVE' => 'Y', // выбрать только активные

'%PROP_TITLE.PROP_TITLE' => 'тест', // выбрать только элементы, в заголовке которых есть подстрока «тест»

'=PROP_TITLE.LANGUAGE_ID' => array('ru', ''), // фильтрация по свойству заголовка только среди русских и неязыковых значений

),

'order' => array(

'PROP_TITLE' => 'asc', // сортировать по значениям свойства TITLE

),

'group' => array(

'ELEMENT_ID', // группировать по ELEMENT_ID чтобы избежать дублирования строк выборки из-за подключения таблицы свойств

),

),

array('TITLE'), // в фильтрах используется свойство TITLE

false, // не проверять принадлежность к текущему сайту

true, // проверять права доступа к элементам

'ru' // сортировка по русскоязычным значениям

);

while ($el_data = $res_elements ->fetch())

{

print_r($el_data);

}

Примечания:

1. Фильтр по свойству имеет повтор через точку PROP_(код свойства).PROP_(код свойства) по причине того, что для этого фильтра создается дополнительная виртуальная сущность, опирающаяся на таблицу значений свойств хранилища, присоединяемая к сущности элементов через INNER JOIN. Список таких дополнительных сущностей задается списком кодов свойств, передаваемых через параметр $prop_check.

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

2. Для того, что сортировка по свойствам среди элементов стала возможной, после добавления / изменения значений свойств элемента нужно применять к нему метод \SIMAI\Storage\Property::UpdateStorageElementSorts.

Метод getById

\SIMAI\Storage\Element::getById(

string $storage_id,

integer $element_id

);

Метод возвращает объект Main\DB\Result, из которого можно получить список хранилищ. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища

$element_id

Ид элемента

Возвращаемое значение:

Метод возвращает объект Main\DB\Result, из которого можно получить информацию об элементе хранилища.

Примеры использования:

$res_element = \SIMAI\Storage\Element::getById(

'test_storage', // код хранилища

12 // ид элемента

);

if ($el_data = $res_element ->fetch())

{

print_r($el_data);

}

Метод getLanList

\SIMAI\Storage\Element::getLanList(

string $storage_id,

integer $element_id

);

Метод возвращает список кодов языков, для которых у элемента $element_id есть значения свойств. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища

$element_id

Ид элемента

Возвращаемое значение:

Метод возвращает массив кодов языков.

Примеры использования:

$lang_list = \SIMAI\Storage\Element:: getLanList (

'test_storage', // код хранилища

12 // ид элемента

);

print_r($lang_list);

Метод getUserAccess

\SIMAI\Storage\Element::getUserAccess(

string $storage_id,

integer $element_id,

integer $for_user_id = false

);

Метод возвращает буквенный код прав доступа пользователя к элементу (D/R/W/X). Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

$element_id

Ид элемента.

$for_user_id

Ид пользователя. Не обязательный параметр, по умолчанию false, при значении false рассчитывается для текущего пользователя.

Возвращаемое значение:

Метод возвращает буквенный код прав доступа пользователя к элементу (D/R/W/X).

Примеры использования:

$access_lvl = \SIMAI\Storage\Element::getUserAccess(

'test_storage', // код хранилища

12, // ид элемента

11, // для пользователя с ID=11

);

echo $access_lvl;

Метод getAccess

\SIMAI\Storage\Element::getAccess(

string $storage_id,

integer $element_id

);

Метод возвращает список кодов языков, для которых у элемента $element_id есть значения свойств. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

$element_id

Ид элемента.

Возвращаемое значение:

Метод возвращает массив вида Array('ид группы' => 'код доступа', ...).

Примеры использования:

$access_lvls = \SIMAI\Storage\Element::getAccess(

'test_storage', // код хранилища

12, // ид элемента

);

print_r($access_lvl);

Метод is_section

\SIMAI\Storage\Element::is_section(

string $storage_id,

integer $element_id

);

Метод определяет, является ли элемент разделом. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

$element_id

Ид элемента.

Возвращаемое значение:

Метод возвращает true, если элемент – раздел, либо false, если элемент – запись.

Примеры использования:

$is_section = \SIMAI\Storage\Element::is_section(

'test_storage', // код хранилища

12, // ид элемента

);

echo $is_section;

Метод isset_lan

\SIMAI\Storage\Element::isset_lan(

string $storage_id,

integer $element_id,

string $language_id

);

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

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

$element_id

Ид элемента.

$language_id

Код языка.

Возвращаемое значение:

Метод возвращает true, если у элемента есть значения свойств, относящихся к данному языку, либо false, если нет.

Примеры использования:

$isset_lan = \SIMAI\Storage\Element::isset_lan(

'test_storage', // код хранилища

12, // ид элемента

'en', // код языка

);

echo $isset_lan;

Метод tree_resort

\SIMAI\Storage\Element::tree_resort(

string $storage_id,

integer $element_id = 0,

integer $cnt = 0,

integer $depth = 0,

string $ACTIVE = 'Y'

);

Метод запускает пересортировку разделов хранилища с учетом вложенности. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

$element_id

Ид элемента. Не обязательный служебный параметр, ограничивающий пересортировку. В большинстве случаев указывать не следует.

$cnt

Текущий счетчик пересортировки. Не обязательный служебный параметр. В большинстве случаев указывать не следует.

$depth

Текущая глубина вложенности. Не обязательный служебный параметр. В большинстве случаев указывать не следует.

$ACTIVE

Активность разделов. Не обязательный служебный параметр. В большинстве случаев указывать не следует.

Возвращаемое значение:

Метод возвращает число – счетчик пересортировки.

Примеры использования:

\SIMAI\Storage\Element::tree_resort(

'test_storage', // код хранилища

);

Метод get_subsections_ids

\SIMAI\Storage\Element::get_subsections_ids(

string $storage_id,

integer $element_id,

boolean $only_active = false,

boolean $check_sites = false,

boolean $check_access = false

);

Метод возвращает список подразделов для заданного раздела. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

$element_id

Ид раздела.

$only_active

Возвращать только активные подразделы. Не обязательный параметр, по умолчанию – false.

$check_sites

Если параметр $check_sites = true, то проверяется привязка хранилищ к текущему сайту. Не обязательный параметр, по умолчанию false.

$check_access

Если $check_access = true, то проверяется уровень доступа к хранилищам, для присутствия хранилищ в выборке нужен уровень доступа не ниже, чем «Чтение» (R). Не обязательный параметр, по умолчанию false.

Возвращаемое значение:

Метод возвращает массив идов подразделов по отношению к заданному разделу.

Примеры использования:

$subsections_ids = \SIMAI\Storage\Element::get_subsections_ids(

'test_storage', // код хранилища

12, // ид раздела

);

print_r($subsections_ids);

Метод get_sections_chain

\SIMAI\Storage\Element::get_sections_chain(

string $storage_id,

integer $element_id,

boolean $include_current = false

);

Метод возвращает цепочку вложенных разделов, к которым относится заданный элемент, начиная с первого уровня. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

$element_id

Ид элемента.

$include_current

Включать в цепочку текущий элемент, если он – раздел. Не обязательный параметр, по умолчанию – false.

Возвращаемое значение:

Метод возвращает массив родительских разделов по отношению к заданному элементу, начиная с первого уровня.

Примеры использования:

$sections_chain = \SIMAI\Storage\Element::get_sections_chain(

'test_storage', // код хранилища

12, // ид элемента

);

print_r($sections_chain);

Класс Property

Данный класс предназначен для работы с сущностью свойств. Располагается в lib/property.php

Метод

Описание

add

Метод добавляет новое свойство.

update

Метод изменяет параметры свойства с ключом $property_id.

delete

Метод удаляет свойство с ключом $property_id.

getList

Метод возвращает список свойств.

getById

Метод возвращает информацию по свойству с ключом $property_id.

setPropValue

Метод устанавливает значения свойства для элемента или самого хранилища

UpdateStorageElementSorts

Метод обновляет в таблице элементов колонки для сортировок по свойствам

GetPropValues

Метод собирает значения свойств для элемента или самого хранилища

GetPropValuesMassQuick

Метод собирает значения свойств сразу нескольких элементов

GetStorageTitle

Метод возвращает заголовок хранилища (из свойства TITLE)

GetElementTitle

Метод возвращает заголовок элемента (из свойства TITLE)

Метод add

\SIMAI\Storage\Property::add(

array $data,

);

Метод добавляет новое свойство. Метод статический.

Добавление свойства данным методом возможно только, если у пользователя уровень доступа к хранилищу, куда относится свойство, не ниже, чем «Запись» (W). Перед добавлением свойства вызываются обработчики события OnBeforePropertyAdd, из которых можно изменить значения полей или отменить добавление хранилища, вернув сообщение об ошибке. После добавления хранилища вызывается событие OnAfterPropertyAdd.

Параметры:

Параметр

Описание

$data

Массив, содержащий значения полей свойства вида Array("поле"=>"значение", ...).

Поле SETTINGS (дополнительные параметры) задается в виде массива Array("параметр"=>"значение ", ...).

Можно задавать языковые заголовки свойства, передавая подмассив LANGUAGE вида Array("код языка"=>"заголовок ", ...).

Возвращаемое значение:

Возвращается числовой ключ добавленного свойства (в случае успешного добавления) либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$property_id = \SIMAI\Storage\Property::add(

array(

'STORAGE_ID'=>'test_storage', // код хранилища

'CODE'=>'DESCRIPTION', // код свойства

'TYPE'=>'text', // тип свойства «текст»

'SETTINGS'=>array(

'multiple_cnt' => 3,

'cols' => 25,

'rows' => 6,

'text_type' => 'html',

'filtrable' => 'Y',

'searchable' => 'Y'

), // набор доп. параметров, для каждого типа свойств этот набор свой

'MULTIPLE'=>'Y', // множественное свойство

'MULTILANGUAGE'=>'Y', // мультиязычное свойство

'SORT'=>'100', // показатель сортировки

'STORAGE_USE'=>'N', // не используется для самого хранилища

'SECTION_USE'=>'N', // не используется для разделов

'ITEM_USE'=>'Y', // используется для записей

'SYSTEM'=>'N', // свойство не системное

'LANGUAGE'=>array('ru'=>'Описание', 'en'=>'Description'), // сразу задаем языковые подписи

)

);

Метод update

\SIMAI\Storage\Property::update(

integer $property_id,

array $data,

);

Метод обновляет поля свойства с ключом $property_id. Метод статический.

Изменение свойства данным методом возможно только, если у пользователя уровень доступа к хранилищу не ниже, чем «Запись» (W).

Перед изменением свойства вызываются обработчики события OnBeforePropertyUpdate, из которых можно изменить значения полей или отменить изменение хранилища, вернув сообщение об ошибке. После изменения хранилища вызывается событие OnAfterPropertyUpdate.

Параметры:

Параметр

Описание

$property_id

Числовой ид обновляемого свойства

$data

Массив, содержащий значения полей свойства вида Array("поле"=>"значение", ...).

Поле SETTINGS (дополнительные параметры) задается в виде массива Array("параметр"=>"значение ", ...).

Можно задавать языковые заголовки свойства, передавая подмассив LANGUAGE вида Array("код языка"=>"заголовок ", ...).

Возвращаемое значение:

Возвращается true в случае успешного обновления либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$result = \SIMAI\Storage\Property::update(

15, // ид свойства

array(

'CODE'=>'DESCRIPTION', // код свойства

'TYPE'=>'text', // тип свойства «текст»

'SETTINGS'=>array(

'multiple_cnt' => 3,

'cols' => 25,

'rows' => 6,

'text_type' => 'html',

'filtrable' => 'Y',

'searchable' => 'Y'

), // набор доп. параметров, для каждого типа свойств этот набор свой

'MULTIPLE'=>'Y', // множественное свойство

'MULTILANGUAGE'=>'Y', // мультиязычное свойство

)

);

Примечание:

Смена принадлежности свойства к хранилищу данным методом не допускается.

Метод delete

\SIMAI\Storage\Property::delete(

integer $property_id

);

Метод удаляет свойство с кодом $property_id. Метод статический.

Удаление свойства данным методом возможно только, если у пользователя уровень доступа к хранилищу не ниже, чем «Запись» (W).

Перед удалением свойства вызываются обработчики события OnBeforePropertyDelete, из которых можно изменить значения полей или отменить удаление свойства, вернув сообщение об ошибке. После удаления свойства вызывается событие OnAfterPropertyDelete.

Параметры:

Параметр

Описание

$property_id

Ид удаляемого свойства

Возвращаемое значение:

Возвращается true в случае успешного удаления либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$result = \SIMAI\Storage\Property::delete(

15, // ид свойства

);

Метод getList

\SIMAI\Storage\Property::getList(

array $params = array(),

);

Метод возвращает объект Main\DB\Result, из которого можно получить список свойств. Метод статический.

Параметры:

Параметр

Описание

$params

array(

'select' => ... // имена полей, которые необходимо получить в результате

'filter' => ... // описание фильтра для WHERE и HAVING

'group' => ... // явное указание полей, по которым нужно группировать результат

'order' => ... // параметры сортировки

'limit' => ... // количество записей

'offset' => ... // смещение для limit

'runtime' => ... // динамически определенные поля

)

Возвращаемое значение:

Возвращается объект Main\DB\Result, к которому можно применять методы fetch() и fetchAll().

Подробная информация по работе с объектом выборки D7 ORM находится по адресу: http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=5753&LESSON_PATH=3913.5062.5748.5063.5753

Примеры использования:

$res_prop = \SIMAI\Storage\Property::getList(

array(

'filter' => array('STORAGE_ID' => 'test_storage'), // выбрать все свойства хранилища test_storage

'order' => array('SORT' => 'asc'), // сортировать по показателю сортировки

)

);

while ($prop_data = $res_prop ->fetch())

{

print_r($prop_data);

}

Метод getById

\SIMAI\Storage\Property::getByID(

string $property_id

);

Метод возвращает объект Main\DB\Result, из которого можно получить информацию о свойстве. Метод статический.

Параметры:

Параметр

Описание

$property_id

Ид свойства

Возвращаемое значение:

Возвращается объект Main\DB\Result, к которому можно применять методы fetch() и fetchAll().

Примеры использования:

$res_prop = \SIMAI\Storage\Property::getById(

15 // ид свойства

);

if ($prop_data = $res_prop->fetch())

{

print_r($prop_data);

}

Метод setPropValue

\SIMAI\Storage\Property::setPropValue(

string $storage_id,

integer $element_id,

string $property_code,

mixed $value,

boolean $ignore_use_type = false,

boolean $check_rights = false

);

Метод возвращает объект Main\DB\Result, из которого можно получить информацию о хранилище. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища

$element_id

Ид элемента. Если равен нулю, то подразумевается обновление значений для самого хранилища

$property_code

Код свойства либо его числовой ид.

$value

Значения свойства. Задаются единичным значением либо массивом.

Для файлового свойства значение задается в виде файлового массива, формируемого через CFile::MakeFileArray либо числовым идентификатором файла из файловой таблицы.

Для мультиязычных свойств задаются в виде массива

Array(

'код языка' => единичное значение либо массив значений

...

)

$ignore_use_type

Не проверять, применимо ли значение свойства к данному типу элементов или самому хранилищу. Не обязательный параметр, по умолчанию – false.

$check_rights

Проверять уровень доступа к хранилищу и элементу. Не обязательный параметр, по умолчанию – false.

Возвращаемое значение:

Возвращается true в случае успешного обновления либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$res = \SIMAI\Storage\Property::setPropValue(

'test_storage', // код хранилища

12, // ид элемента

'TITLE', // код свойства

array(

'ru' => 'Тест', // значение для русского языка у мультияз. свойства

'en' => 'Test', // значение для англ. языка у мультияз. свойства

),

);

Примечания:

1. Одновременное обновление сразу нескольких свойств данным методом невозможно.

2. После обновления всех свойств для элемента в большинстве случаев необходимо запустить методы \SIMAI\Storage\Property::UpdateStorageElementSorts и \SIMAI\Storage\Search::UpdateStorageElementSearch. Описания этих методов можно прочесть в разделах, посвященных классам Property и Search соотвественно.

Метод setPropComplexValue


\SIMAI\Storage\Property::setPropComplexValue (
  string $storage_id,
  integer $element_id,
  string $property_code,
  array $value,
  array $additional,
  boolean $ignore_use_type = false,
  boolean $check_rights = false,
  boolean $delete_other_values = true
);

Метод предназначен для установки значений составных свойств для элементов хранилища. Метод статический.

Параметры:

Параметр Описание
$storage_id Код хранилища
$element_id Ид элемента. Если равен нулю, то подразумевается обновление значений для самого хранилища
$property_code Код свойства либо его числовой ид.
$value Значения свойства. Задаются единичным значением либо массивом. Для файлового свойства значение задается в виде файлового массива, формируемого через CFile::MakeFileArray либо числовым идентификатором файла из файловой таблицы. Для мультиязычных свойств задаются в виде массива Array( 'код языка' => единичное значение либо массив значений ... )
$ignore_use_type Не проверять, применимо ли значение свойства к данному типу элементов или самому хранилищу. Не обязательный параметр, по умолчанию – false.
$check_rights Проверять уровень доступа к хранилищу и элементу. Не обязательный параметр, по умолчанию – false.
$complex_property_code Код составного свойства. Этот метод используется ТОЛЬКО при вызове из метода setPropComplexValue. Не обязательный параметр, по умолчанию – false.
$complex_property_value Код значения составного свойства. Этот метод используется ТОЛЬКО при вызове из метода setPropComplexValue. Не обязательный параметр, по умолчанию – false.

Возвращаемое значение:

Возвращается true в случае успешного обновления либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:


$res = \SIMAI\Storage\Property::setPropValue(
  'test_storage', // код хранилища 
  12, // ид элемента
  'TITLE', // код свойства
  array(
    'ru' => 'Тест', // значение для русского языка у мультияз. свойства
    'en' => 'Test', // значение для англ. языка у мультияз. свойства
  ), 
);

Примечания:

1. Одновременное обновление сразу нескольких свойств данным методом невозможно.

2. Данный метод НЕ предназначен для установки составных значений, для этого применяется метод setPropComplexValue.

3. После обновления всех свойств для элемента в большинстве случаев необходимо запустить методы \SIMAI\Storage\Property::UpdateStorageElementSorts и \SIMAI\Storage\Search::UpdateStorageElementSearch. Описания этих методов можно прочесть в разделах, посвященных классам Property и Search соотвественно.

Метод UpdateStorageElementSorts

\SIMAI\Storage\Property::UpdateStorageElementSorts(

string $storage_id,

mixed $element_ids

);

Метод обновляет колонки в таблице элементов для корректной сортировки по значениям свойств. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища

$element_ids

Массив идов элементов, для которых необходимо такое обновление, либо единичный ид элемента

Примеры использования:

\SIMAI\Storage\Property::UpdateStorageElementSorts(

'test_storage', // код хранилища

Array(12, 15, 17) // иды элементов

);

Метод GetPropValues

\SIMAI\Storage\Property::GetPropValues(

string $storage_id,

integer $element_id,

mixed $properties = false,

string $language_id = false,

boolean $check_rights = false

);

Метод возвращает массив значений свойств для элемента хранилища либо самого хранилища. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища

$element_id

Ид элемента. Если равен нулю, то подразумевается обновление значений для самого хранилища

$properties

Массив нужных символьных кодов свойств либо единичный код. Не обязательный параметр, по умолчанию false. Значение false означает выбрать значения для всех свойств элемента (или хранилища).

$language_id

Код языка. Не обязательный параметр.

Если задан (не равен false), то возвращаемый массив будет содержать только значения нужного языка либо не имеющие языковой привязки. Такой массив будет иметь вид:

Array(

'код свойства' => массив значений,

...

)

Если не задан (равен false), то возвращаемый массив будет распределен по языкам, причем знаечние без языковой привязки будут содержаться в подмассиве с ключом '-':

Array(

'-' => array(

'код свойства' => массив значений,

...

), // неязыковые значения

'ru' => array(

'код свойства' => массив значений,

...

), // значения для русского языка

...

);

$check_rights

Проверять уровень доступа к хранилищу и элементу. Не обязательный параметр, по умолчанию – false.

Возвращаемое значение:

Возвращается массив значений. Если параметр $language_id не задан или равен false, то массив будет распределен по языкам. Если же в параметре $language_id задан код языка, то массив будет более простым по структуре.

Примеры использования:

$prop_values = \SIMAI\Storage\Property::GetPropValues(

'test_storage', // код хранилища

15, // ид элемента

array('TITLE'), // только значения свойства TITLE

'ru' // значения для русского языка либо неязыковые

);

print_r($prop_values);

Примечания:

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

Метод GetPropValuesMassQuick

\SIMAI\Storage\Property::GetPropValues(

string $storage_id,

integer $element_id,

mixed $properties = false,

string $language_id = false

);

Метод возвращает массив значений свойств для нескольких элементов хранилища. Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища

$element_id

Ид элемента. Если равен нулю, то подразумевается обновление значений для самого хранилища

$properties

Массив нужных символьных кодов свойств либо единичный код. Не обязательный параметр, по умолчанию false. Значение false означает выбрать значения для всех свойств элемента (или хранилища).

$language_id

Код языка. Не обязательный параметр.

Если задан (не равен false), то возвращаемый массив будет содержать только значения нужного языка либо не имеющие языковой привязки. Такой массив будет иметь вид:

array(

'ид элемента' => array(

'код свойства' => массив значений,

...

),

);

Если не задан (равен false), то возвращаемый массив будет распределен по языкам, причем знаечние без языковой привязки будут содержаться в подмассиве с ключом '-':

array(

'ид элемента' => array(

array(

'-' => array(

'код свойства' => массив значений,

...

), // неязыковые значения

'ru' => array(

'код свойства' => массив значений,

...

), // значения для русского языка

...

),

);

Возвращаемое значение:

Возвращается массив значений. Если параметр $language_id не задан или равен false, то массив будет распределен по языкам. Если же в параметре $language_id задан код языка, то массив будет более простым по структуре.

Примеры использования:

$prop_values = \SIMAI\Storage\Property::GetPropValuesMassQuick(

'test_storage', // код хранилища

Array(15, 17, 18) // иды элементов

array('TITLE'), // только значения свойства TITLE

'ru' // значения для русского языка либо неязыковые

);

print_r($prop_values);

Примечания:

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

Этот метод используется в основном в компонентах, где проверка прав хранилища производится в других местах, поэтому встроенной проверки прав у данного метода нет.

Метод GetStorageTitle

\SIMAI\Storage\Property::GetStorageTitle(

string $property_id,

integer $text_max_lenght = 50,

string $language_id,

);

Метод возвращает заголовок хранилища (из свойства TITLE). Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища

$text_max_lenght

Макс. длина возвращаемой строки (если больше, то строка обрезается).

$language_id

Код языка. Не обязательный параметр, по умолчанию равен константе LANGUAGE_ID.

Возвращаемое значение:

Возвращается строка – заголовок хранилища.

Примеры использования:

$title = \SIMAI\Storage\Property::GetStorageTitle(

'test_storage', // код хранилища

100, // обрезать до ста букв

'ru' // значения для русского языка

);

Метод GetElementTitle

\SIMAI\Storage\Property::GetElementTitle(

string $property_id,

string $element_id,

integer $text_max_lenght = 50,

string $language_id,

);

Метод возвращает заголовок хранилища (из свойства TITLE). Метод статический.

Параметры:

Параметр

Описание

$storage_id

Код хранилища.

$element_id

Ид элемента.

$text_max_lenght

Макс. длина возвращаемой строки (если больше, то строка обрезается).

$language_id

Код языка. Не обязательный параметр, по умолчанию равен константе LANGUAGE_ID.

Возвращаемое значение:

Возвращается строка – заголовок элемента.

Примеры использования:

$title = \SIMAI\Storage\Property::GetElementTitle(

'test_storage', // код хранилища

15, // ид элемента

100, // обрезать до ста букв

'ru' // значения для русского языка

);

Класс Set

Данный класс предназначен для работы с сущностью наборов. Располагается в lib/set.php

Метод

Описание

add

Метод добавляет новый набор.

update

Метод изменяет параметры набора с кодом $set_id.

delete

Метод удаляет свойство с кодом $set_id.

getList

Метод возвращает список наборов.

getById

Метод возвращает информацию по набору с кодом $set_id.

isset_lan

Метод проверяет, существует ли для набора языковая версия для языка $language_id.

getLanList

Метод возвращает список языковых версий для набора.

Метод add

\SIMAI\Storage\Set::add(

array $data,

);

Метод добавляет новый набор. Метод статический.

Перед добавлением набора вызываются обработчики события OnBeforeSetAdd, из которых можно изменить значения полей или отменить добавление набора, вернув сообщение об ошибке. После добавления набора вызывается событие OnAfterSetAdd.

Параметры:

Параметр

Описание

$data

Массив, содержащий значения полей набора вида Array("поле"=>"значение", ...).

Поле SET задается в виде массива кодов хранилищ (если поле OBJECT=S, т.е. набор относится к хранилищам) либо массива идов элементов (если поле OBJECT=E, т.е. набор относится к элементам хранилища, в этом случае среди полей должен присутствовать код хранилища STORAGE_ID).

Можно задавать языковые заголовки набора, передавая подмассив LANGUAGE вида Array("код языка"=>"заголовок ", ...).

Возвращаемое значение:

Возвращается код добавленного набора (в случае успешного добавления) либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$set_id = \SIMAI\Storage\Set::add(

array(

'SET_ID'=>'new_storages_set', // код набора

'OBJECT'=>'S', // набор хранилищ

'SORT'=>'100', // показатель сортировки

'SET'=>array('test_storage', 'test_storage2'), // набор кодов хранилищ

'LANGUAGE'=>array('ru'=>'Новый набор хранилищ', 'en'=>'New storages set'), // языковые заголовки набора

)

);

$set_id = \SIMAI\Storage\Set::add(

array(

'SET_ID'=>'new_elements_set', // код набора

'OBJECT'=>'E', // набор элементов хранилища

'STORAGE_ID'=>'test_storage', // код хранилища

'SORT'=>'100', // показатель сортировки

'SET'=>array(5, 7, 8), // набор идов элементов

'LANGUAGE'=>array('ru'=>'Новый набор элементов', 'en'=>'New elements set'), // языковые заголовки набора

)

);

Метод update

\SIMAI\Storage\Set::update(

string $set_id,

array $data,

);

Метод обновляет поля набора с кодом $set_id. Метод статический.

Перед изменением набора вызываются обработчики события OnBeforeSetUpdate, из которых можно изменить значения полей или отменить изменение набора, вернув сообщение об ошибке. После изменения набора вызывается событие OnAfterSetUpdate.

Параметры:

Параметр

Описание

$set_id

Код обновляемого набора

$data

Массив, содержащий значения полей набора вида Array("поле"=>"значение", ...).

Поле SET задается в виде массива кодов хранилищ (если поле OBJECT=S, т.е. набор относится к хранилищам) либо массива идов элементов (если поле OBJECT=E, т.е. набор относится к элементам хранилища).

Можно задавать языковые заголовки набора, передавая подмассив LANGUAGE вида Array("код языка"=>"заголовок ", ...).

Возвращаемое значение:

Возвращается true в случае успешного обновления либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$result = \SIMAI\Storage\Set::update(

'new_elements_set', // код набора

array(

'SET'=>array(5, 7, 8), // набор идов элементов

)

);

Метод delete

\SIMAI\Storage\Set::delete(

string $set_id

);

Метод удаляет набор с кодом $set_id. Метод статический.

Перед удалением свойства вызываются обработчики события OnBeforeSetDelete, из которых можно изменить значения полей или отменить удаление свойства, вернув сообщение об ошибке. После удаления свойства вызывается событие OnAfterSetDelete.

Параметры:

Параметр

Описание

$set_id

Код удаляемого набора

Возвращаемое значение:

Возвращается true в случае успешного удаления либо false в случае ошибки. Текст ошибки будет добавлен в глобальный массив $GLOBALS['SF_STORAGE_ERRORS'].

Примеры использования:

$result = \SIMAI\Storage\Set::delete(

'new_elements_set', // код набора

);

Метод getList

\SIMAI\Storage\Set::getList(

array $params = array(),

);

Метод возвращает объект Main\DB\Result, из которого можно получить список свойств. Метод статический.

Параметры:

Параметр

Описание

$params

array(

'select' => ... // имена полей, которые необходимо получить в результате

'filter' => ... // описание фильтра для WHERE и HAVING

'group' => ... // явное указание полей, по которым нужно группировать результат

'order' => ... // параметры сортировки

'limit' => ... // количество записей

'offset' => ... // смещение для limit

'runtime' => ... // динамически определенные поля

)

Возвращаемое значение:

Возвращается объект Main\DB\Result, к которому можно применять методы fetch() и fetchAll().

Подробная информация по работе с объектом выборки D7 ORM находится по адресу: http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=5753&LESSON_PATH=3913.5062.5748.5063.5753

Примеры использования:

$res_set = \SIMAI\Storage\Set::getList(

array(

'filter' => array('STORAGE_ID' => 'test_storage'), // выбрать все наборы элементов хранилища test_storage

'order' => array('SORT' => 'asc'), // сортировать по показателю сортировки

)

);

while ($set_data = $res_set ->fetch())

{

print_r($set_data);

}

Метод getById

\SIMAI\Storage\Set::getByID(

string $set_id

);

Метод возвращает объект Main\DB\Result, из которого можно получить информацию о наборе. Метод статический.

Параметры:

Параметр

Описание

$set_id

Код набора

Возвращаемое значение:

Возвращается объект Main\DB\Result, к которому можно применять методы fetch() и fetchAll().

Примеры использования:

$res_set = \SIMAI\Storage\Set::getById(

'new_elements_set' // код набора

);

if ($set_data = $res_set->fetch())

{

print_r($set_data);

}

Метод isset_lan

\SIMAI\Storage\Set::isset_lan(

string $set_id,

string $language_id,

);

Метод проверяет для данного набора наличие языковой версии, относящейстя к языку $language_id. Метод статический.

Параметры:

Параметр

Описание

$set_id

Код набора

$language_id

Код языка

Возвращаемое значение:

Возвращается true либо false.

Примеры использования:

$res_set = \SIMAI\Storage\Set::isset_lan(

'new_elements_set', // код набора

'en', // для англ. языка

);

Метод getLanList

\SIMAI\Storage\Set::getLanList(

string $set_id,

);

Метод возвращает для данного набора список языковых версий. Метод статический.

Параметры:

Параметр

Описание

$set_id

Код набора

Возвращаемое значение:

Возвращается объект Main\DB\Result, к которому можно применять методы fetch() и fetchAll().

Примеры использования:

$res_set = \SIMAI\Storage\Set::getLanList(

'new_elements_set', // код набора

);

while ($set_data = $res_set->fetch())

{

print_r($set_data);

}

Класс Search

Методы данного класса предназначены для поиска по элементам хранилища. Располагается в lib/search.php

Метод

Описание

UpdateStorageElementSearch

Метод обновляет поисковые поля у элементов хранилища.

Метод UpdateStorageElementSearch

\SIMAI\Storage\Search::UpdateStorageElementSearch(

string $storage_id,

mixed $element_ids

);

Метод обновляет поисковые поля у элементов хранилища с идами $element_ids.

Параметры:

Параметр

Описание

$storage_id

Код хранилища

$element_ids

Массив идов элементов, для которых необходимо такое обновление, либо единичный ид элемента

Примеры использования:

$storage_id = \SIMAI\Storage\Search::UpdateStorageElementSearch(

'test_storage', // код хранилища

array(4, 5, 7, 11), // иды элементов

);

Работа с событиями

События, определяемые методами классов второго уровня, работают через \Bitrix\Main\EventManager

Список событий:

Событие

Параметры

Описание

События класса Storage

OnBeforeStorageAdd

array $fields

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

OnAfterStorageAdd

string $primary

array $fields

Вызывается после добавления хранилища.

OnBeforeStorageUpdate

string $primary

array $fields

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

OnAfterStorageUpdate

string $primary

array $fields

Вызывается после обновления хранилища.

OnBeforeStorageDelete

string $primary

Вызывается перед удалением хранилища.

OnAfterStorageDelete

string $primary

Вызывается после удаления хранилища.

События класса Element

OnBeforeElementAdd

string $storage_id

array $fields

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

OnAfterElementAdd

string $storage_id

string $primary

array $fields

Вызывается после добавления элемента хранилища.

OnBeforeElementUpdate

string $storage_id

string $primary

array $fields

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

OnAfterElementUpdate

string $storage_id

string $primary

array $fields

Вызывается после обновления элемента хранилища.

OnBeforeElementDelete

string $storage_id

string $primary

Вызывается перед удалением элемента хранилища.

OnAfterElementDelete

string $storage_id

string $primary

Вызывается после удаления элемента хранилища.

События класса Property

OnBeforePropertyAdd

array $fields

Вызывается перед добавлением свойства, может быть использовано для отмены или модификации данных.

OnAfterPropertyAdd

string $primary

array $fields

Вызывается после добавления свойства.

OnBeforePropertyUpdate

string $primary

array $fields

Вызывается перед обновлением свойства, может быть использовано для отмены или модификации данных.

OnAfterPropertyUpdate

string $primary

array $fields

Вызывается после обновления свойства.

OnBeforePropertyDelete

string $primary

Вызывается перед удалением свойства.

OnAfterPropertyDelete

string $primary

Вызывается после удаления свойства.

События класса Set

OnBeforeSetAdd

array $fields

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

OnAfterSetAdd

string $primary

array $fields

Вызывается после добавления набора.

OnBeforeSetUpdate

string $primary

array $fields

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

OnAfterSetUpdate

string $primary

array $fields

Вызывается после обновления набора.

OnBeforeSetDelete

string $primary

Вызывается перед удалением набора.

OnAfterSetDelete

string $primary

Вызывается после удаления набора.

Примеры работы с событиями можно увидеть в разделе документации «Примеры API».