• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/services/base/productcategoryrestriction.php
  • Класс: BitrixSaleServicesBaseProductCategoryRestriction
  • Вызов: ProductCategoryRestriction::getJsHandler
static function getJsHandler() : string;

/**
 * Return array of basket items from $entity
 * @param Entity $entity
 * @return array BasketItem objects
 */
abstract protected static function getBasketItems(Entity $entity) : array;

/**
 * Retrieves from the $entity an array
 * @param Entity $entity
 * @return array
 */
public static function extractParams(Entity $entity) : array
{
	if (!BitrixMainLoader::includeModule('catalog'))
	{
		return [];
	}

	$basketItems = static::getBasketItems($entity);

	$productIds = [];

	/** @var BasketItem $basketItem */
	foreach ($basketItems as $basketItem)
	{
		if ($basketItem->getField('MODULE') != 'catalog')
		{
			continue;
		}

		$productId = (int)$basketItem->getField('PRODUCT_ID');
		$productInfo = CCatalogSKU::getProductInfo($productId);

		$candidate = $productInfo['ID'] ?? $productId;

		if (!in_array($candidate, $productIds))
		{
			$productIds[] = $candidate;
		}
	}

	return self::getCategoriesItems($productIds);
}