- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/product/systemfield.php
- Класс: BitrixCatalogProductSystemField
- Вызов: SystemField::handlerHighloadBlockBeforeUninstall
static function handlerHighloadBlockBeforeUninstall(MainEvent $event): MainEventResult
{
$blockNames = [];
$module = $event->getParameter('module');
if ($module === 'highloadblock')
{
$fieldList = self::getBuildedFieldList();
foreach ($fieldList as $field)
{
if ($field::getTypeId() !== CatalogProductSystemFieldTypeHighloadBlock::class)
{
continue;
}
if (!$field::isAllowed() || !$field::isExists())
{
continue;
}
$config = $field::getConfig();
/** @var CatalogProductSystemFieldTypeHighloadBlock $fieldType */
$fieldType = $field::getTypeId();
$row = $fieldType::getStorageTable($config['HIGHLOADBLOCK']);
if (!empty($row))
{
$blockNames[] = $config['HIGHLOADBLOCK']['NAME'];
}
unset($row, $fieldType, $config);
}
unset($fieldList);
}
unset($module);
if (empty($blockNames))
{
return new MainEventResult(MainEventResult::SUCCESS);
}
else
{
if (count($blockNames) === 1)
{
$error = Loc::getMessage(
'BX_CATALOG_PRODUCT_SYSTEMFIELD_ERR_DISALLOW_UNINSTALL_HIGHLOADBLOCK',
[
'#NAME#' => reset($blockNames),
]
);
}
else
{
$error = Loc::getMessage(
'BX_CATALOG_PRODUCT_SYSTEMFIELD_ERR_DISALLOW_UNINSTALL_HIGHLOADBLOCK_LIST',
[
'#NAME#' => implode(', ', $blockNames),
]
);
}
return new MainEventResult(
MainEventResult::ERROR,
[
'error' => $error,
],
'catalog'
);
}
}