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