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