• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/ui/viewer/itemattributes.php
  • Класс: BitrixMainUIViewerItemAttributes
  • Вызов: ItemAttributes::getViewerTypeByFile
static function getViewerTypeByFile(array $fileArray)
{
	$contentType = $fileArray['CONTENT_TYPE'];
	$originalName = $fileArray['ORIGINAL_NAME'] ?? null;

	if (isset(static::$renderClassByContentType[$contentType]))
	{
		$renderClass = static::$renderClassByContentType[$contentType];
		if ($renderClass::getSizeRestriction() === null)
		{
			return $renderClass::getJsType();
		}
	}

	$previewManager = new PreviewManager();
	$renderClass = $previewManager->getRenderClassByFile([
		'contentType' => $contentType,
		'originalName' => $originalName,
		'size' => $fileArray['FILE_SIZE'] ?? null,
	]);

	if ($renderClass === RendererStub::class)
	{
		$transformerManager = new TransformerManager();
		if ($transformerManager->isAvailable())
		{
			/** @var Transformation $transformationClass */
			$transformation = $transformerManager->buildTransformationByFile($fileArray);
			if ($transformation)
			{
				$contentType = $transformation->getOutputContentType();
				$renderClass = $previewManager->getRenderClassByFile([
					'contentType' => $contentType,
					'originalName' => $originalName,
				]);
			}
		}
	}

	if ($renderClass !== RendererRestrictedBySize::class)
	{
		static::$renderClassByContentType[$fileArray['CONTENT_TYPE']] = $renderClass;
	}

	return $renderClass::getJsType();
}