• Модуль: rest
  • Путь к файлу: ~/bitrix/modules/rest/lib/userfieldproxy.php
  • Класс: BitrixRestUserFieldProxy
  • Вызов: UserFieldProxy::get
public function get($ID)
{
	if(!is_int($ID))
	{
		$ID = (int)$ID;
	}

	if($ID <= 0)
	{
		throw new RestException('ID is not defined or invalid.');
	}

	if(!$this->checkReadPermission())
	{
		throw new RestException('Access denied.');
	}

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

	$entity = new CUserTypeEntity();
	$result = $entity->GetByID($ID);
	if(!is_array($result))
	{
		throw new RestException("The entity with ID '{$ID}' is not found.", RestException::ERROR_NOT_FOUND);
	}

	$entityID = isset($result['ENTITY_ID']) ? $result['ENTITY_ID'] : '';
	if($entityID !== $this->entityID)
	{
		throw new RestException('Access denied.');
	}

	if($result['USER_TYPE_ID'] === 'enumeration')
	{
		$result['LIST'] = array();

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

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

	return $result;
}