- Модуль: rest
- Путь к файлу: ~/bitrix/modules/rest/lib/controller/file.php
- Класс: BitrixRestControllerFile
- Вызов: File::getAction
public function getAction($entity, $id, $field, $value, CRestServer $restServer = null)
{
$errorCollection = new ErrorCollection();
if (in_array($entity, $this->allowEntityList, true))
{
if ($restServer && $this->entityScope[$entity])
{
$authScope = $restServer->getAuthScope();
if (!in_array($this->entityScope[$entity], $authScope, true))
{
$errorCollection->add(
[
new Error('Invalid request credentials', 'INVALID_CREDENTIALS')
]
);
}
}
if ($errorCollection->isEmpty())
{
global $USER_FIELD_MANAGER;
$userFieldsData = $USER_FIELD_MANAGER->getUserFields($entity, (int) $id, LANGUAGE_ID);
if (
$userFieldsData[$field]['USER_TYPE_ID'] === 'file'
&& (int) $value > 0
&& !empty($userFieldsData[$field]['VALUE']))
{
if (
(int) $value === (int) $userFieldsData[$field]['VALUE']
|| (
is_array($userFieldsData[$field]['VALUE'])
&& in_array((int) $value, $userFieldsData[$field]['VALUE'], true)
)
)
{
return BFile::createByFileId((int) $value);
}
$errorCollection->add(
[
new Error('File not found.', 'FILE_NOT_FOUND')
]
);
}
else
{
$errorCollection->add(
[
new Error('Entity not allow.', 'ENTITY_NOT_ALLOW')
]
);
}
}
}
else
{
$errorCollection->add(
[
new Error('Access denied.', 'ACCESS_DENIED')
]
);
}
if (!$errorCollection->isEmpty() && EngineController::getScope() === EngineController::SCOPE_REST)
{
/** @var Error $error*/
$error = $errorCollection->current();
if ($error)
{
return new RestException(
$error->getMessage(),
$error->getCode()
);
}
}
return AjaxJson::createError($errorCollection);
}