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