- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/orderdiscountbase.php
- Класс: BitrixSaleOrderDiscountBase
- Вызов: OrderDiscountBase::initDiscountProviders
static function initDiscountProviders()
{
self::$discountProviders = array();
$event = new MainEvent('sale', self::EVENT_ON_BUILD_DISCOUNT_PROVIDERS, array());
$event->send();
$resultList = $event->getResults();
if (empty($resultList) || !is_array($resultList))
return;
$actionList = static::getDiscountProviderActions();
/** @var MainEventResult $eventResult */
foreach ($resultList as $eventResult)
{
if ($eventResult->getType() != MainEventResult::SUCCESS)
continue;
$module = (string)$eventResult->getModuleId();
$provider = $eventResult->getParameters();
if (empty($provider) || !is_array($provider))
continue;
if (!isset($provider[self::PROVIDER_ACTION_PREPARE_DISCOUNT]))
continue;
self::$discountProviders[$module] = array(
'module' => $module
);
foreach ($actionList as $action)
{
if (isset($provider[$action]))
self::$discountProviders[$module][$action] = $provider[$action];
}
}
unset($provider, $module, $actionList, $eventResult, $resultList, $event);
}