- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/controller/userfieldconfig.php
- Класс: BitrixMainControllerUserFieldConfig
- Вызов: UserFieldConfig::listAction
public function listAction(
string $moduleId,
array $select = ['*'],
array $order = [],
array $filter = [],
PageNavigation $pageNavigation = null,
CRestServer $restServer = null
): ?Page
{
$access = $this->getAccess($moduleId, $restServer);
if (!$access)
{
return null;
}
$converter = new Converter(Converter::TO_UPPER | Converter::KEYS | Converter::TO_SNAKE);
/** @noinspection CallableParameterUseCaseInTypeContextInspection */
$filter = $converter->process($filter);
/** @noinspection CallableParameterUseCaseInTypeContextInspection */
$order = $converter->process($order);
/** @noinspection CallableParameterUseCaseInTypeContextInspection */
$select = $converter->process($select);
if (!$access->canReadWithFilter($filter))
{
$this->addError($this->getReadAccessDeniedError());
return null;
}
/** @noinspection CallableParameterUseCaseInTypeContextInspection */
$filter = $access->prepareFilter($filter);
$runtime = [];
if (!empty($select['LANGUAGE']) && is_string($select['LANGUAGE']))
{
$runtime[] = UserFieldTable::getLabelsReference('LABELS', $select['LANGUAGE']);
unset($select['LANGUAGE']);
$select = array_merge($select, UserFieldTable::getLabelsSelect());
}
$fields = [];
$list = UserFieldTable::getList([
'select' => $select,
'filter' => $filter,
'order' => $order,
'offset' => $pageNavigation ? $pageNavigation->getOffset() : null,
'limit' => $pageNavigation ? $pageNavigation->getLimit() : null,
'runtime' => $runtime,
]);
while ($field = $list->fetch())
{
$fields[] = $this->preparePublicData($field);
}
return new Page('fields', $fields, static function () use ($filter) {
return UserFieldTable::getCount($filter);
});
}