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