• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/providerbase.php
  • Класс: BitrixSaleProviderBase
  • Вызов: ProviderBase::getProductData
static function getProductData(BasketItemCollection $basketCollection, array $select = array(), BasketItem $refreshItem = null)
{
	$resultList = array();

	$orderId = null;
	$userId = null;
	$siteId = null;
	$currency = null;

	if (($order = $basketCollection->getOrder()) !== null)
	{
		$userId = $order->getUserId();
		$siteId = $order->getSiteId();
		$currency = $order->getCurrency();
	}

	if  ($siteId === null)
	{
		$basket = $basketCollection->getBasket();
		$siteId = $basket->getSiteId();
	}

	if ($siteId === null)
		return array();

	if ($currency === null)
	{
		$currency = InternalsSiteCurrencyTable::getSiteCurrency($siteId);
		if (!$currency)
			$currency = CurrencyCurrencyManager::getBaseCurrency();
	}

	$context = array(
		"USER_ID" => $userId,
		"SITE_ID" => $siteId,
		"CURRENCY" => $currency,
	);

	$basketList = static::makeArrayFromBasketCollection($basketCollection, $refreshItem);

	// Process each element separately so that it works correctly with duplicates.
	$basketProviderMap = static::createProviderBasketMap($basketList, array('QUANTITY', 'RENEWAL', 'SITE_ID', 'USER_ID'));
	foreach ($basketProviderMap as $basketProviderMapItem)
	{
		$basketProviderList = static::redistributeToProviders([
			$basketProviderMapItem,
		]);

		if (!empty($basketProviderList))
		{
			$options = array(
				'RETURN_BASKET_ID'
			);

			foreach ($basketProviderList as $providerClassName => $productValueList)
			{
				$r = static::getProductDataByList($productValueList, $providerClassName, $select, $context, $options);
				if ($r->isSuccess())
				{
					$resultData = $r->getData();
					if (!empty($resultData['PRODUCT_DATA_LIST']))
					{
						$resultList = $resultData['PRODUCT_DATA_LIST'] + $resultList;
					}
				}
			}

		}
	}

	return $resultList;
}