• Модуль: rest
  • Путь к файлу: ~/bitrix/modules/rest/lib/userfieldproxy.php
  • Класс: BitrixRestUserFieldProxy
  • Вызов: UserFieldProxy::getList
public function getList(array $order, array $filter)
{
	if(!$this->checkReadPermission())
	{
		throw new RestException('Access denied.');
	}

	if($this->entityID === '')
	{
		throw new RestException('Operation is not allowed. Entity ID is not defined.');
	}
	$filter['ENTITY_ID'] = $this->entityID;

	if(isset($filter['USER_TYPE_ID']))
	{
		$handlerList = PlacementTable::getHandlersList(UserFieldType::PLACEMENT_UF_TYPE);
		foreach($handlerList as $handler)
		{
			if($handler['ADDITIONAL'] === $filter['USER_TYPE_ID'])
			{
				$filter['USER_TYPE_ID'] = Callback::getUserTypeId($handler);
			}
		}
	}

	$entity = new CUserTypeEntity();
	$dbResult = $entity->GetList($order, $filter);
	$result = array();
	while($fields = $dbResult->Fetch())
	{
		$userTypeID = isset($fields['USER_TYPE_ID']) ? $fields['USER_TYPE_ID'] : '';
		if($userTypeID === 'datetime'
			&& isset($fields['SETTINGS'])
			&& isset($fields['SETTINGS']['DEFAULT_VALUE'])
			&& isset($fields['SETTINGS']['DEFAULT_VALUE']['VALUE'])
			&& $fields['SETTINGS']['DEFAULT_VALUE']['VALUE'] !== '')
		{
			$fields['SETTINGS']['DEFAULT_VALUE']['VALUE'] = CRestUtil::ConvertDateTime($fields['SETTINGS']['DEFAULT_VALUE']['VALUE']);
		}

		if($userTypeID === 'enumeration')
		{
			$fields['LIST'] = array();

			$enumEntity = new CUserFieldEnum();
			$dbResultEnum = $enumEntity->GetList(array('SORT' => 'ASC'), array('USER_FIELD_ID' => $fields['ID']));
			while($enum = $dbResultEnum->Fetch())
			{
				$fields['LIST'][] = array(
					'ID' => $enum['ID'],
					'SORT' => $enum['SORT'],
					'VALUE' => $enum['VALUE'],
					'DEF' => $enum['DEF']
				);
			}
		}
		elseif(preg_match("/^".UserFieldCallback::USER_TYPE_ID_PREFIX."_([d]+)_/", $userTypeID, $matches))
		{
			$fields['USER_TYPE_ID'] = str_replace($matches[0], '', $fields['USER_TYPE_ID']);

			$appInfo = AppTable::getByClientId($matches[1]);
			$fields['USER_TYPE_OWNER'] = $appInfo['CLIENT_ID'];
		}

		$result[] = $fields;
	}

	$result['total'] = count($result);
	return $result;
}