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