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».