• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/services/base/restrictionmanager.php
  • Класс: BitrixSaleServicesBaseRestrictionManager
  • Вызов: RestrictionManager::init
static function init()
{
	if(static::$classNames != null)
	{
		return;
	}

	$classes = static::getBuildInRestrictions();

	Loader::registerAutoLoadClasses('sale', $classes);

	/**
	 * @var Restriction $class
	 * @var string $path
	 */
	foreach ($classes as $class => $path)
	{
		if (!$class::isAvailable())
		{
			unset($classes[$class]);
		}
	}

	$event = new Event('sale', static::getEventName());
	$event->send();
	$resultList = $event->getResults();

	if (is_array($resultList) && !empty($resultList))
	{
		$customClasses = array();

		foreach ($resultList as $eventResult)
		{
			/** @var  EventResult $eventResult*/
			if ($eventResult->getType() != EventResult::SUCCESS)
				throw new SystemException("Can't add custom restriction class successfully");

			$params = $eventResult->getParameters();

			if(!empty($params) && is_array($params))
				$customClasses = array_merge($customClasses, $params);
		}

		if(!empty($customClasses))
		{
			Loader::registerAutoLoadClasses(null, $customClasses);
			$classes = array_merge($customClasses, $classes);
		}
	}

	static::$classNames = array_keys($classes);
}