- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/controller/action/entity/renderimageinputaction.php
- Класс: Bitrix\Crm\Controller\Action\Entity\RenderImageInputAction
- Вызов: RenderImageInputAction::run
public function run(string $fieldName, string $entityTypeName, int $entityId = 0, string $fieldValue = '', array $context = []): ?Component
{
$entityTypeId = \CCrmOwnerType::ResolveId($entityTypeName);
$fileControlId = mb_strtolower($fieldName) . '_uploader';
$isRequisiteEntity = ($entityTypeId === \CCrmOwnerType::Requisite);
if ($isRequisiteEntity)
{
$hasAccess = $this->checkRequisiteAccess($entityId, $context);
}
else
{
$userPermissions = Container::getInstance()->getUserPermissions();
$hasAccess =
$entityId > 0
? $userPermissions->checkUpdatePermissions($entityTypeId, $entityId)
: $userPermissions->checkAddPermissions($entityTypeId);
}
if (!$hasAccess)
{
Container::getInstance()->getLocalization()->loadMessages();
$this->addError(\Bitrix\Crm\Controller\ErrorCode::getAccessDeniedError());
return null;
}
$value = 0;
if ($fieldValue !== '')
{
$allowedFileIds = \Bitrix\Main\UI\FileInputUtility::instance()->checkFiles($fileControlId, [$fieldValue]);
if (in_array($fieldValue, $allowedFileIds, false))
{
$value = $fieldValue;
}
}
if (!$value && $entityId > 0)
{
if ($isRequisiteEntity)
{
$value = $this->getRequisite($entityId)[$fieldName] ?? 0;
}
else
{
$factory = Container::getInstance()->getFactory($entityTypeId);
if ($factory)
{
$item = $factory->getItem($entityId);
if ($item && $item->hasField($fieldName))
{
$value = $item->get($fieldName);
}
}
}
}
return new Component(
'bitrix:main.file.input',
'',
[
'MODULE_ID' => 'crm',
'MAX_FILE_SIZE' => 3145728,
'MULTIPLE' => 'N',
'ALLOW_UPLOAD' => 'I',
'SHOW_AVATAR_EDITOR' => 'Y',
'CONTROL_ID' => $fileControlId,
'INPUT_NAME' => $fieldName,
'INPUT_VALUE' => (int)$value,
]
);
}