• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/delivery/services/automatic.php
  • Класс: BitrixSaleDeliveryServicesAutomatic
  • Вызов: Automatic::getCompatibleProfiles
static function getCompatibleProfiles($sid, $compatibilityFunc, array $config, Shipment $shipment)
{
	if($sid == '')
		throw new ArgumentNullException("sid");

	static $result = array();
	$oldOrder = self::convertNewOrderToOld($shipment);

	if(!empty($oldOrder["ITEMS"]) && is_array($oldOrder["ITEMS"]))
	{
		$maxDimensions = array();

		foreach($oldOrder["ITEMS"] as $item)
		{
			if(is_string($item["DIMENSIONS"]))
				$item["DIMENSIONS"] = unserialize($item["DIMENSIONS"], ['allowed_classes' => false]);

			if(!is_array($item["DIMENSIONS"]) || empty($item["DIMENSIONS"]))
				continue;

			$maxDimensions = CSaleDeliveryHelper::getMaxDimensions(
				array(
					$item["DIMENSIONS"]["WIDTH"],
					$item["DIMENSIONS"]["HEIGHT"],
					$item["DIMENSIONS"]["LENGTH"]
				),
				$maxDimensions
			);
		}

		if(!empty($maxDimensions))
			$oldOrder["MAX_DIMENSIONS"] = $maxDimensions;
	}

	$hitCacheId = $sid.'_'.md5(serialize($oldOrder)).'_'.md5(serialize($config["CONFIG"]));

	if(!isset($result[$hitCacheId]))
	{
		$result[$hitCacheId] = call_user_func($compatibilityFunc, $oldOrder, $config["CONFIG"]);
	}

	return $result[$hitCacheId];
}