• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/ui/viewer/previewmanager.php
  • Класс: BitrixMainUIViewerPreviewManager
  • Вызов: PreviewManager::buildViewRendererList
private function buildViewRendererList(): void
{
	$default = [
		RendererPdf::class,
		RendererVideo::class,
		RendererAudio::class,
		RendererImage::class,
		RendererCode::class,
	];

	$event = new Event('main', 'onPreviewRendererBuildList');
	$event->send();

	$additionalList = [];
	foreach ($event->getResults() as $result)
	{
		if ($result->getType() != EventResult::SUCCESS)
		{
			continue;
		}
		$result = $result->getParameters();
		if (!is_array($result))
		{
			throw new SystemException('Wrong event result. Must be array.');
		}

		foreach ($result as $class)
		{
			if (!is_string($class) || !class_exists($class))
			{
				throw new SystemException('Wrong event result. There is not a class.');
			}

			if (!is_subclass_of($class, RendererRenderer::class, true))
			{
				throw new SystemException("Wrong event result. {$class} is not a subclass of " . RendererRenderer::class);
			}

			$additionalList[] = $class;
		}
	}

	$this->rendererList = array_merge($additionalList, $default);
}