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