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