• Модуль: 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);
	});
}