- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/providerbase.php
- Класс: BitrixSaleProviderBase
- Вызов: ProviderBase::getSetItems
static function getSetItems(BasketItemBase $basketItem)
{
$bundleChildList = array();
$provider = $basketItem->getProvider();
if ($provider)
{
if (array_key_exists("IBXSaleProductProvider", class_implements($provider)))
{
$bundleChildList = $provider::GetSetItems($basketItem->getProductId(), BasketItem::TYPE_SET, array('BASKET_ID' => $basketItem->getId()));
}
elseif (class_exists($provider))
{
/** @var BasketItemCollection $collection */
$collection = $basketItem->getCollection();
/** @var Basket $basket */
$basket = $collection->getBasket();
if (!$basket)
{
throw new ObjectNotFoundException('Entity "Basket" not found');
}
$order = $basket->getOrder();
if ($order)
{
$context = array(
'SITE_ID' => $order->getSiteId(),
'USER_ID' => $order->getUserId(),
'CURRENCY' => $order->getCurrency(),
);
}
else
{
global $USER;
$context = array(
'SITE_ID' => SITE_ID,
'USER_ID' => $USER && $USER->GetID() > 0 ? $USER->GetID() : 0,
'CURRENCY' => CurrencyCurrencyManager::getBaseCurrency(),
);
}
$creator = InternalsProviderCreator::create($context);
$creator->addBasketItem($basketItem);
$r = $creator->getBundleItems();
if ($r->isSuccess())
{
$resultProductListData = $r->getData();
if (!empty($resultProductListData['BUNDLE_LIST']))
{
$bundleChildList = $resultProductListData['BUNDLE_LIST'];
}
}
$order = $basket->getOrder();
if ($order)
{
$context = array(
'SITE_ID' => $order->getSiteId(),
'USER_ID' => $order->getUserId(),
'CURRENCY' => $order->getCurrency(),
);
}
else
{
global $USER;
$context = array(
'SITE_ID' => SITE_ID,
'USER_ID' => $USER && $USER->GetID() > 0 ? $USER->GetID() : 0,
'CURRENCY' => CurrencyCurrencyManager::getBaseCurrency(),
);
}
$creator = InternalsProviderCreator::create($context);
$creator->addBasketItem($basketItem);
$r = $creator->getBundleItems();
if ($r->isSuccess())
{
$resultProductListData = $r->getData();
if (!empty($resultProductListData['BUNDLE_LIST']))
{
$bundleChildList = $resultProductListData['BUNDLE_LIST'];
}
}
}
else
{
$bundleChildList = CSaleBasket::executeCallbackFunction(
$basketItem->getField('CALLBACK_FUNC'),
$basketItem->getField('MODULE'),
$basketItem->getField('PRODUCT_ID'),
$basketItem->getField('QUANTITY')
);
}
return $bundleChildList;
}
return false;
}