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