• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/location/connector.php
  • Класс: BitrixSaleLocationConnector
  • Вызов: Connector::getLinkStatusForMultipleNodes
static function getLinkStatusForMultipleNodes($nodeInfo, $entityPrimary, $connectors = false) // rename to: getConnectionStatusForMultipleNodes
{
	$nodeInfo = Assert::expectArray($nodeInfo, '$nodeInfo');
	$entityPrimary = Assert::expectStringNotNull($entityPrimary, '$entityPrimary');

	$result = array();

	if(!static::checkLinkUsageAny($entityPrimary)) // if there are no links at all, connection virtually exists
	{
		foreach($nodeInfo as $node)
		{
			$result[$node['ID']] = self::LSTAT_BELOW_CONNECTOR;
		}

		return $result;
	}

	if(!is_array($connectors))
		$connectors = static::getConnectedLocationsInfo($entityPrimary);

	foreach($nodeInfo as $node)
	{
		$node = Assert::expectNotEmptyArray($node, '$nodeInfo[]');
		$node['ID'] = Assert::expectIntegerPositive($node['ID'], '$nodeInfo[][ID]');
		$node['LEFT_MARGIN'] = Assert::expectIntegerNonNegative($node['LEFT_MARGIN'], '$nodeInfo[][LEFT_MARGIN]');
		$node['RIGHT_MARGIN'] = Assert::expectIntegerPositive($node['RIGHT_MARGIN'], '$nodeInfo[][RIGHT_MARGIN]');

		$result[$node['ID']] = false;
		foreach($connectors as $connector)
		{
			if($connector['ID'] == $node['ID'])
			{
				$result[$node['ID']] = self::LSTAT_IS_CONNECTOR;
				break;
			}
			elseif($node['LEFT_MARGIN'] >= $connector['LEFT_MARGIN'] && $node['RIGHT_MARGIN'] <= $connector['RIGHT_MARGIN'])
			{
				$result[$node['ID']] = self::LSTAT_BELOW_CONNECTOR;
				break;
			}
			elseif($node['LEFT_MARGIN'] <= $connector['LEFT_MARGIN'] && $node['RIGHT_MARGIN'] >= $connector['RIGHT_MARGIN'])
			{
				$result[$node['ID']] = self::LSTAT_ABOVE_CONNECTOR;
				break;
			}
		}

		if(!$result[$node['ID']])
			$result[$node['ID']] = self::LSTAT_IN_NOT_CONNECTED_BRANCH;
	}

	return $result;
}