Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fi1a/usersettings
Модуль 1С-Битрикс "Пользовательские настройки". Предоставляет страницу с пользовательскими настройками сайта.
https://github.com/fi1a/usersettings
bitrix bitrix-module php
Last synced: about 1 month ago
JSON representation
Модуль 1С-Битрикс "Пользовательские настройки". Предоставляет страницу с пользовательскими настройками сайта.
- Host: GitHub
- URL: https://github.com/fi1a/usersettings
- Owner: fi1a
- License: mit
- Created: 2020-11-27T12:30:15.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2023-03-15T07:50:02.000Z (almost 2 years ago)
- Last Synced: 2024-04-22T22:47:48.189Z (9 months ago)
- Topics: bitrix, bitrix-module, php
- Language: PHP
- Homepage:
- Size: 1.15 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Модуль 1С-Битрикс "Пользовательские настройки"
[![Latest Version][badge-release]][packagist]
[![Software License][badge-license]][license]
[![PHP Version][badge-php]][php]
[![Total Downloads][badge-downloads]][downloads]
[![Support mail][badge-mail]][mail]Позволяет создать административную страницу с пользовательскими настройками.
Предоставляет удобное API для создания вкладок и полей, что дает возможность
использовать этот модуль совместно с модулями миграций. События дают возможность вносить
изменения в устанавливаемое значение настройки или выполнить какие-либо действия при
добавлении/удалении/обновлении вкладок или полей.## Описание модуля
Данный модуль решает задачи добавления настроек для вашего проекта.
Например: включение/отключение, даты для реализации активности какого-либо функционала,
тексты. Типы полей в настройках ограничены типами пользовательских полей, т.е. вы легко можете
добавить свой тип поля для настроек.## Преимущества модуля
1. Расположение ссылки в меню со страницей пользовательских настроек можно расположить в любом основном разделе. Также возможна настройка названия страницы и название ссылки пользовательских настроек;
1. В настройках модуля можно добавить вкладки и в них поля;
1. Для вкладок и полей предусмотрена сортировка, что позволяет настроить расположение их на странице пользовательских настроек;
1. В качестве полей модуля выступают пользовательские поля, что позволяет добавить в настройки любой из доступных типов пользовательских полей (строка, дата и т.д.);
1. Поддерживаются множественные значения для настроек;
1. Предусмотрены гибкие настройки прав доступа для просмотра/редактирования пользовательских настроек и просмотра/редактирования полей, вкладок;
1. Для вкладок есть возможность указать название и заголовок, для полей - название и подсказку;
1. Используя API легко можно добавить вкладку или поле, это позволяет писать миграции;
1. Система событий дает возможность вносить изменения при установке значения настройки или выполнить какие-либо действия при добавлении/удалении/обновлении вкладок или полей.## Список поддерживаемых типов полей
Из коробки вам будут доступны следующие типы полей:
- Адрес;
- Бронирование ресурсов;
- Видео;
- Да/Нет;
- Дата;
- Дата со временем;
- Деньги;
- Опрос;
- Письмо (email);
- Привязка к разделам инф. блоков;
- Привязка к элементам highload-блоков;
- Привязка к элементам инф. блоков;
- Содержимое ссылки;
- Список;
- Ссылка;
- Строка;
- Файл;
- Целое число;
- Число;
- Шаблон.*список актуален на момент релиза модуля для «1С-Битрикс: Управление сайтом» редакции "Бизнес"*
## Изображения модуля
Добавление новой вкладки:
![Добавление новой вкладки](images/fi1a.usersettings-screen-1.png)
Добавление поля для пользовательских настроек:
![Добавление поля для пользовательских настроек](images/fi1a.usersettings-screen-2.png)
Редактирование пользовательских настроек
![Редактирование пользовательских настроек](images/fi1a.usersettings-screen-3.png)
Внешний вид пользовательских настроек
![Внешний вид пользовательских настроек](images/fi1a.usersettings-screen-4.png)
## Установка модуля из Маркетплейса 1С-Битрикс
Модуль можно установить из Маркетплейса 1С-Битрикс
["Пользовательские настройки"](http://marketplace.1c-bitrix.ru/solutions/fi1a.usersettings/)Перед установкой модуля следует установить модуль
["Обертка над composer для установки зависимостей"](http://marketplace.1c-bitrix.ru/solutions/fi1a.bitrixrequire/)
если он еще не установлен.
Модуль необходим для установки зависимостей через composer.После чего модуль устанавливается и удаляется как любой модуль из маркетплейса.
## Установка модуля через composer
В вашем composer.json проекта необходимо указать:
- в блоке require указать инсталятор ```"fi1a/installers": "^2.0```;
- в блоке require указать модуль ```"fi1a/usersettings": "^2.0"```;
- указать путь до 1С-Битрикс (`bitrix-dir`) для копирования модулей при установке ```fi1a/installers```.Пример файла composer.json проекта:
```json
{
"name": "fi1a/project",
"type": "project",
"license": "MIT",
"authors": [
{
"name": "Fi1a",
"email": "[email protected]"
}
],
"require": {
"fi1a/installers": "^2.0",
"fi1a/usersettings": "^2.0"
},
"extra": {
"bitrix-dir": "../bitrix"
}
}
```Затем выполняем установку пакетов командой ```composer install```.
Если у вас не подключен composer autoload.php, его необходимо подключить в файле local/php_interface/init.php
```php
require_once __DIR__ . '/../vendor/autoload.php';
```Если модуль не установили через composer, его необходимо установить из админки 1С-Битрикс
(Marketplace > Установленные решения > модуль "Пользовательские настройки (fi1a.usersettings)").**После установки проверьте права на чтение файлов и папок модуля.**
## Поддержка миграций
Начиная с версии 1.2.0 появилась поддержка миграций модуля ["Миграции для разработчиков" (sprint.migration)](https://marketplace.1c-bitrix.ru/solutions/sprint.migration/)
Добавлен хелпер ```\Fi1a\UserSettings\SprintMigration\Helpers\UserSettingsHelper``` и билдер ```\Fi1a\UserSettings\SprintMigration\Builders\UserSettingsBuilder```
Использование хелпера:
```php
public function up()
{
$helper = $this->getHelperManager();$helper->UserSettings()->saveTab("TAB", array (
'ACTIVE' => '1',
'CODE' => 'TAB',
'SORT' => '500',
'LOCALIZATION' => [
'ru' => [
'L_NAME' => 'Вкладка',
'L_TITLE' => 'Вкладка',
],
'en' => [
'L_NAME' => 'Tab',
'L_TITLE' => 'Tab',
],
],
));
}
```Создание миграции доступно в разделе "Инструменты" под пунктом "Пользовательские настройки" на странице управления
миграциями модуля "Миграции для разработчиков" (sprint.migration).![Билдер модуля миграций](images/fi1a.usersettings-screen-5.png)
## Работа со значениями полей
Класс ```\Fi1a\UserSettings\Option``` предназначен для работы со значениями полей.
Класс реализует паттерн Singleton и для получения экземпляра класса следует использовать
метод ```getInstance()```.```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Option;Loader::includeModule('fi1a.usersettings');
$option = Option::getInstance();
```### Получить значение поля
Для получения значения поля по символьному коду необходимо
воспользоваться методом ```get(string $key, $default = null)```.| Аргумент | Описание |
|-------------|--------------------------------------------------------|
| string $key | Символьный код поля |
| $default | Значение, которое вернется при отсутсвии значения в БД |```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Option;Loader::includeModule('fi1a.usersettings');
// Вернется значение поля UF_CAPTCHA_SECRET, если значение не задано вернется false
Option::getInstance()->get('UF_CAPTCHA_SECRET', false);
```
Метод ```getAll(): array``` предназначен для получения значений
по всем пользовательским полям.```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Option;Loader::includeModule('fi1a.usersettings');
// Вернутся значения по всем пользовательским полям
Option::getInstance()->getAll();
```### Установить значение поля
Для установки значения поля используется метод ```set(string $key, $value): \Bitrix\Main\Result```.
В этом методе реализована валидация значения поля. Метод возвращает экземпляр класса
```\Bitrix\Main\Result``` и проверить наличие ошибки при установке значения можно
методом ```isSuccess()```.| Аргумент | Описание |
|-------------|---------------------|
| string $key | Символьный код поля |
| $value | Новое значение поля |```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Option;Loader::includeModule('fi1a.usersettings');
$option = Option::getInstance();
$result = $option->set('UF_CAPTCHA_SECRET', 'foo');
if (!$result->isSuccess()) {
// В случае ошибки
echo implode('
', $result->getErrorMessages());return;
}// Вернется значение "foo" установленное методом "set"
$option->get('UF_CAPTCHA_SECRET');
```### Сбросить кеш значений
При изменении структуры или установки значения кеш автоматически очищается.
Метод ```clearCache(): bool``` пригодится для принудительной очистки кеша
при изменениях не через API модуля.```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Option;Loader::includeModule('fi1a.usersettings');
Option::getInstance()->clearCache();
```## Выборка, добавление, обновление, удаление вкладок
Работа с вкладками реализуется тремя классами:
- ```\Fi1a\UserSettings\TabMapper``` — маппер вкладок пользовательских настроек;
- ```\Fi1a\UserSettings\Tab``` — класс вкладки в пользовательских настройках;
- ```\Fi1a\UserSettings\TabCollection``` — коллекция экземпляров классов вкладок пользовательских настроек.Подробнее на них остановимся ниже.
### Добавление вкладки
Класс вкладки ```\Fi1a\UserSettings\Tab``` является наследником класса
```\ArrayObject```. Для начала нужно получить экземпляр класса вкладки используя
фабричный метод ```create(array $input = []): TabInterface``` передав в него все необходимые
парамеры. Данный метод является статичным. После того как мы получили экземпляр
класса ```\Fi1a\UserSettings\Tab``` вызовем метод ```add(): AddResult```,
который вернет результат в виде объкта класса ```\Bitrix\Main\ORM\Data\AddResult```.
Успешность выполнения операции можно проверить методом ```isSuccess($internalCall = false)```
класса ```\Bitrix\Main\ORM\Data\AddResult```.```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Tab;Loader::includeModule('fi1a.usersettings');
$tab = Tab::create([
'ACTIVE' => 1,
'CODE' => 'FORM_OPTIONS',
'SORT' => 500,
'LOCALIZATION' => [
'ru' => [
'L_NAME' => 'Настройки формы',
'L_TITLE' => 'Важные настройки формы',
],
],
]);$addResult = $tab->add();
if (!$addResult->isSuccess()) {
echo implode('
', $addResult->getErrorMessages());
}
```Описание полей:
- ```ACTIVE``` — активность вкладки. Определяет будет ли выведена вкладка на странице пользовательских настроек;
- ```CODE``` — символьный код вкладки;
- ```SORT``` — сортировка вкладки. Определяет в какой последовательности будут выведены вкладки на странице пользовательских настроек;
- ```LOCALIZATION``` — массив с языковыми сообщениями. Ключем является символьный код языка.
- ```L_NAME``` — название вкладки;
- ```L_TITLE``` — заголовок вкладки.
### Выборка вкладокОсновным метод для выборки вкладок является метод
```getList(array $parameters = []): TabCollectionInterface```
класса ```\Fi1a\UserSettings\TabMapper```. Данный метод принимает в качестве аргумента
массив аналогичный синтаксису ORM D7. Метод возвращает коллекцию классов вкладок
```\Fi1a\UserSettings\TabCollection```. При пустом результате выборки
класс коллекции вернется с нулевым количеством элементов.| Аргумент | Описание |
|-------------------|-------------------|
| array $parameters | Параметры getList |```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;Loader::includeModule('fi1a.usersettings');
$tabCollection = TabMapper::getList([
'filter' => [
'ACTIVE' => 1,
],
'order' => [
'SORT' => 'ASC',
],
]);foreach ($tabCollection as $tab) {
// Do something
}
unset($tab);
```Предыдущий пример можно заменить с использованием метода
```getActive(array $parameters = []): TabCollectionInterface```. Данный метод
выполняет выборку всех активных вкладок с возможностью дополнительной фильтрации или сортировки путем
передачи аргумента ```$parameters``` аналогичного ORM D7.| Аргумент | Описание |
|-------------------|-------------------|
| array $parameters | Параметры getList |```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;Loader::includeModule('fi1a.usersettings');
$tabCollection = TabMapper::getActive([
'order' => [
'SORT' => 'ASC',
],
]);foreach ($tabCollection as $tab) {
// Do something
}
unset($tab);
```Метод ```getById(int $id)``` осуществляет поиск вкладки по идентификатору. В отличие от
методов ```getList(array $parameters = []): TabCollectionInterface``` и ```getActive(array $parameters = []): TabCollectionInterface```
возвращает не коллекцию вкладок, а экземпляр класса вкладки ```\Fi1a\UserSettings\Tab```.
Если вкладку не удалось найти по идентификатору, метод вернет значение ```false```.| Аргумент | Описание |
|----------|-----------------------|
| int $id | Идентификатор вкладки |```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;Loader::includeModule('fi1a.usersettings');
$tab = TabMapper::getById(1);
if (false !== $tab) {
echo $tab['ID'];
}
```### Обновление вкладки
Для обновления вкладки следует использовать метод ```update(): UpdateResult```
класса ```\Fi1a\UserSettings\Tab```,
который вернет результат в виде объкта класса ```\Bitrix\Main\ORM\Data\UpdateResult```.
Успешность выполнения операции можно проверить методом ```isSuccess($internalCall = false)```
класса ```\Bitrix\Main\ORM\Data\UpdateResult```.```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;Loader::includeModule('fi1a.usersettings');
$tab = TabMapper::getById(3);
if (false !== $tab) {
$tab['ACTIVE'] = 0;$updateResult = $tab->update();
if (!$updateResult->isSuccess()) {
echo implode('
', $updateResult->getErrorMessages());
}
}
```### Сохранение вкладки
Метод ```save()``` осуществляет добавление или обновление вкладки в зависимости от
наличия значения ```ID``` (первичного ключа).Обновление с использованием метода ```save()```
```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;Loader::includeModule('fi1a.usersettings');
$tab = TabMapper::getById(3);
if (false !== $tab) {
// Вызов метода обновит вкладку
$tab['ACTIVE'] = 1;$updateResult = $tab->save();
if (!$updateResult->isSuccess()) {
echo implode('
', $updateResult->getErrorMessages());
}
}
```Добавление с использованием метода ```save()```
```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;Loader::includeModule('fi1a.usersettings');
$tab = TabMapper::getById(3);
if (false !== $tab) {
// Вызов метода добавит вкладку
unset($tab['ID']);
$tab['CODE'] = 'NEW_TAB_CODE';$addResult = $tab->save();
if (!$addResult->isSuccess()) {
echo implode('
', $addResult->getErrorMessages());
}
}
```### Удаление вкладки
Для удаления вкладки следует использовать метод ```delete(): DeleteResult```
класса ```\Fi1a\UserSettings\Tab```,
который вернет результат в виде объкта класса ```\Bitrix\Main\ORM\Data\DeleteResult```.
Успешность выполнения операции можно проверить методом ```isSuccess($internalCall = false)```
класса ```\Bitrix\Main\ORM\Data\DeleteResult```.```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\TabMapper;Loader::includeModule('fi1a.usersettings');
$tab = TabMapper::getById(3);
$deleteResult = $tab->delete();
if (!$deleteResult->isSuccess()) {
echo implode('
', $deleteResult->getErrorMessages());
}
```## Выборка, добавление, обновление, удаление полей
Работа с полями реализуется тремя классами:
- ```\Fi1a\UserSettings\FieldMapper``` — маппер полей пользовательских настроек;
- ```\Fi1a\UserSettings\Field``` — класс поля пользовательских настройках;
- ```\Fi1a\UserSettings\FieldCollection``` — коллекция экземпляров классов полей пользовательских настроек.Подробнее на них остановимся ниже.
### Добавление поля
Класс поля ```\Fi1a\UserSettings\Field``` является наследником класса
```\ArrayObject```. Для начала нужно получить экземпляр класса поля, используя
фабричный метод ```create(array $input = []): FieldInterface```, передав в него все необходимые
парамеры. Данный метод является статичным. После того как мы получили экземпляр
класса ```\Fi1a\UserSettings\Field``` вызовем метод ```add(): AddResult```,
который вернет результат в виде объкта класса ```\Bitrix\Main\ORM\Data\AddResult```.
Успешность выполнения операции можно проверить методом ```isSuccess($internalCall = false)```
класса ```\Bitrix\Main\ORM\Data\AddResult```.Ниже приведен пример добавления поля с типом строка.
```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\Field;Loader::includeModule('fi1a.usersettings');
$field = Field::create([
'ACTIVE' => '1',
'TAB_ID' => '1',
'UF' => [
'FIELD_NAME' => 'UF_RECAPTCHA_SECRET',
'USER_TYPE_ID' => 'string',
'XML_ID' => '',
'SORT' => '500',
'MULTIPLE' => 'N',
'MANDATORY' => 'N',
'SETTINGS' => [
'SIZE' => 60,
'ROWS' => 1,
'REGEXP' => '',
'MIN_LENGTH' => 0,
'MAX_LENGTH' => 0,
'DEFAULT_VALUE' => '',
],
'EDIT_FORM_LABEL' => ['en' => '', 'ru' => 'Приватный ключ reСaptcha v3',],
'HELP_MESSAGE' => ['en' => '', 'ru' => 'Используется для reСaptcha v3',],
],
]);$addResult = $field->add();
if (!$addResult->isSuccess()) {
echo implode('
', $addResult->getErrorMessages());
}
```Описание полей:
- ```ACTIVE``` — активность поля. Определяет будет ли выведено поле на странице пользовательских настроек;
- ```TAB_ID``` — идентификатор вкладки, которой принадлежит поле;
- ```UF``` — массив с настройками пользовательского поля.### Выборка полей
Основным методом для выборки полей является
```getList(array $parameters = []): FieldCollectionInterface```
класса ```\Fi1a\UserSettings\FieldMapper```. Данный метод принимает в качестве аргумента
массив аналогичный синтаксису ORM D7. Метод возвращает коллекцию классов полей
```\Fi1a\UserSettings\FieldCollection```. При пустом результате выборки
класс коллекции вернется с нулевым количеством элементов.| Аргумент | Описание |
|-------------------|-------------------|
| array $parameters | Параметры getList |```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;Loader::includeModule('fi1a.usersettings');
$fieldCollection = FieldMapper::getList([
'filter' => [
'ACTIVE' => 1,
],
'order' => [
'ID' => 'DESC',
],
]);foreach ($fieldCollection as $field) {
// Do something
}
unset($field);
```Предыдущий пример можно заменить с использованием метода
```getActive(array $parameters = []): FieldCollectionInterface```. Данный метод
выполняет выборку всех активных полей с возможностью дополнительной фильтрации или сортировки путем
передачи аргумента ```$parameters``` аналогичного ORM D7.| Аргумент | Описание |
|-------------------|-------------------|
| array $parameters | Параметры getList |```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;Loader::includeModule('fi1a.usersettings');
$fieldCollection = FieldMapper::getActive([
'order' => [
'ID' => 'DESC',
],
]);foreach ($fieldCollection as $field) {
// Do something
}
unset($field);
```Метод ```getById(int $id)``` осуществляет поиск поля по идентификатору (не по идентификатору пользовательского поля).
В отличие от методов ```getList(array $parameters = []): FieldCollectionInterface``` и ```getActive(array $parameters = []): IFieldCollection```
возвращает не коллекцию полей, а экземпляр класса поля ```\Fi1a\UserSettings\Field```.
Если поле не удалось найти по идентификатору, метод вернет значение ```false```.| Аргумент | Описание |
|----------|--------------------|
| int $id | Идентификатор поля |```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;Loader::includeModule('fi1a.usersettings');
$field = FieldMapper::getById(2);
if (false !== $field) {
echo $field['ID'];
}
```Для выбора всех полей вкладки можно использовать метод ```getByTabId(int $tabId)```.
Метод вернет коллекцию полей принадлежащих вкладки с идентификатором ```int $tabId```.| Аргумент | Описание |
|------------|----------------------------|
| int $tabId | Идентификатор вкладки поля |```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;Loader::includeModule('fi1a.usersettings');
$fieldCollection = FieldMapper::getByTabId(1);
foreach ($fieldCollection as $field) {
// Do something
}
unset($field);
```Для выбора поля по символьному коду можно использовать метод ```getByCode(string $code)```.
Метод вернет поле с символьным кодом ```string $code``` или false, если поле с символьным кодом не найдено.| Аргумент | Описание |
|--------------|---------------------|
| string $code | Символьный код поля |```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;Loader::includeModule('fi1a.usersettings');
$field = FieldMapper::getByCode('UF_FUS_FIELD');
if (false !== $field) {
echo $field['ID'];
}
```### Обновление поля
Для обновления поля следует использовать метод ```update(): UpdateResult```
класса ```\Fi1a\UserSettings\Field```,
который вернет результат в виде объекта класса ```\Bitrix\Main\ORM\Data\UpdateResult```.
Успешность выполнения операции можно проверить методом ```isSuccess($internalCall = false)```
класса ```\Bitrix\Main\ORM\Data\UpdateResult```.```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;Loader::includeModule('fi1a.usersettings');
$field = FieldMapper::getById(3);
if (false !== $field) {
$field['ACTIVE'] = 0;$updateResult = $field->update();
if (!$updateResult->isSuccess()) {
echo implode('
', $updateResult->getErrorMessages());
}
}
```### Сохранение поля
Метод ```save()``` осуществляет добавление или обновление поля в зависимости от
наличия значения ```ID``` (первичного ключа).Обновление с использованием метода ```save()```
```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;Loader::includeModule('fi1a.usersettings');
$field = FieldMapper::getById(3);
if (false !== $field) {
// Вызов метода обновит поле
$field['ACTIVE'] = 1;$updateResult = $field->save();
if (!$updateResult->isSuccess()) {
echo implode('
', $updateResult->getErrorMessages());
}
}
```Добавление с использованием метода ```save()```
```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;Loader::includeModule('fi1a.usersettings');
$field = FieldMapper::getById(3);
if (false !== $field) {
// Вызов метода добавит поле
unset($field['ID']);
unset($field['UF_ID']);
unset($field['UF']['ID']);
$field['UF']['FIELD_NAME'] = 'UF_NEW_FIELD';$addResult = $field->save();
if (!$addResult->isSuccess()) {
echo implode('
', $addResult->getErrorMessages());
}
}
```### Удаление поля
Для удаления поля следует использовать метод ```delete(): DeleteResult```
класса ```\Fi1a\UserSettings\Field```,
который вернет результат в виде объкта класса ```\Bitrix\Main\ORM\Data\DeleteResult```>.
Успешность выполнения операции можно проверить методом ```isSuccess($internalCall = false)```
класса ```\Bitrix\Main\ORM\Data\DeleteResult```.```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;Loader::includeModule('fi1a.usersettings');
$field = FieldMapper::getById(3);
$deleteResult = $field->delete();
if (!$deleteResult->isSuccess()) {
echo implode('
', $deleteResult->getErrorMessages());
}
```## Значения поля типа "список"
Получить значения поля типа "список" можно с помощью класса-хелпера ```Fi1a\UserSettings\Helpers\Enums``` метода ```get```
передав в качестве аргумента объект поля ```Fi1a\UserSettings\FieldInterface``` типа "список".```php
use \Bitrix\Main\Loader;
use \Fi1a\UserSettings\FieldMapper;
use \Fi1a\UserSettings\Helpers\Enums;Loader::includeModule('fi1a.usersettings');
$field = FieldMapper::getById(3);
$enums = Enums::get($field);
```## События модуля
В модуле предусмотрены события, которые позволяют модифицировать данные или расширить функционал модуля.
Пример использования событий:```php
use \Bitrix\Main\Event;
use \Bitrix\Main\Loader;
use \Bitrix\Main\EventManager;
use \Bitrix\Main\EventResult;
use \Fi1a\UserSettings\Option;Loader::includeModule('fi1a.usersettings');
EventManager::getInstance()->addEventHandler(
'fi1a.usersettings',
'OnOptionGet',
function (Event $event) {
return new EventResult(
EventResult::SUCCESS,
[
'default' => 'new default value',
]
);
}
);// Если поле имеет значение null или false, вместо 'foo' вернется значение 'new default value'
Option::getInstance()->get('UF_RECAPCHA_SECRET', 'foo');
```
### События связанные со значениями полей- ```OnOptionGet``` — вызывается ДО возврата значения поля методом ```get(string $key, $default = null)``` класса ```\Fi1a\UserSettings\Option```;
- ```OnBeforeOptionSet``` — вызывается ДО установки значения поля методом ```set(string $key, $value): Result``` класса ```\Fi1a\UserSettings\Option```;
- ```OnAfterOptionSet``` — вызывается ПОСЛЕ установки значения поля методом ```set(string $key, $value): Result``` класса ```\Fi1a\UserSettings\Option```.### События связанные с вкладками
- ```OnBeforeTabAdd``` — вызывается ДО добавления новой вкладки методом ```add(): AddResult``` класса ```\Fi1a\UserSettings\Tab```;
- ```OnAfterTabAdd``` — вызывается ПОСЛЕ добавления новой вкладки методом ```add(): AddResult``` класса ```\Fi1a\UserSettings\Tab```;
- ```OnBeforeTabUpdate``` — вызывается ДО обновления вкладки методом ```update(): UpdateResult``` класса ```\Fi1a\UserSettings\Tab```;
- ```OnAfterTabUpdate``` — вызывается ПОСЛЕ обновления вкладки методом ```update(): UpdateResult``` класса ```\Fi1a\UserSettings\Tab```;
- ```OnBeforeTabDelete``` — вызывается ДО удаления вкладки методом ```delete(): DeleteResult``` класса ```\Fi1a\UserSettings\Tab```;
- ```OnAfterTabDelete``` — вызывается ПОСЛЕ удаления вкладки методом ```delete(): DeleteResult``` класса ```\Fi1a\UserSettings\Tab```.### События связанные с полями
- ```OnBeforeFieldAdd``` — вызывается ДО добавления нового поля методом ```add(): AddResult``` класса ```\Fi1a\UserSettings\Field```;
- ```OnAfterFieldAdd``` — вызывается ПОСЛЕ добавления нового поля методом ```add(): AddResult``` класса ```\Fi1a\UserSettings\Field```;
- ```OnBeforeFieldUpdate``` — вызывается ДО обновления поля методом ```update(): UpdateResult``` класса ```\Fi1a\UserSettings\Field```;
- ```OnAfterFieldUpdate``` — вызывается ПОСЛЕ обновления поля методом ```update(): UpdateResult``` класса ```\Fi1a\UserSettings\Field```;
- ```OnBeforeFieldDelete``` — вызывается ДО удаления поля методом ```delete(): DeleteResult``` класса ```\Fi1a\UserSettings\Field```;
- ```OnAfterFieldDelete``` — вызывается ПОСЛЕ удаления поля методом ```delete(): DeleteResult``` класса ```\Fi1a\UserSettings\Field```.[badge-release]: https://img.shields.io/packagist/v/fi1a/usersettings?label=release
[badge-license]: https://img.shields.io/github/license/fi1a/usersettings?style=flat-square
[badge-php]: https://img.shields.io/packagist/php-v/fi1a/usersettings?style=flat-square
[badge-downloads]: https://img.shields.io/packagist/dt/fi1a/usersettings.svg?style=flat-square&colorB=mediumvioletred
[badge-mail]: https://img.shields.io/badge/mail-support%40fi1a.ru-brightgreen[packagist]: https://packagist.org/packages/fi1a/usersettings
[license]: https://github.com/fi1a/usersettings/blob/master/LICENSE
[php]: https://php.net
[downloads]: https://packagist.org/packages/fi1a/usersettings
[mail]: mailto:[email protected]