- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/internals/delivery_paysystem.php
- Класс: BitrixSaleInternalsDeliveryPaySystemTable
- Вызов: DeliveryPaySystemTable::getLinks
static function getLinks($entityId, $entityType, array $preparedData = array(), $considerParent = true)
{
$result = array();
if(intval($entityId) <= 0)
return array();
if($entityType != self::ENTITY_TYPE_DELIVERY && $entityType != self::ENTITY_TYPE_PAYSYSTEM)
throw new ArgumentOutOfRangeException("entityType");
if($entityType == self::ENTITY_TYPE_DELIVERY)
{
$linkDirection = self::LINK_DIRECTION_DELIVERY_PAYSYSTEM;
$reverseLinkDirection = self::LINK_DIRECTION_PAYSYSTEM_DELIVERY;
$reverseEntityType = self::ENTITY_TYPE_PAYSYSTEM;
$parentId = self::getDeliveryParentId($entityId);
}
else
{
$linkDirection = self::LINK_DIRECTION_PAYSYSTEM_DELIVERY;
$reverseLinkDirection = self::LINK_DIRECTION_DELIVERY_PAYSYSTEM;
$reverseEntityType = self::ENTITY_TYPE_DELIVERY;
$parentId = 0;
}
if(isset($preparedData[$entityId]["DIRECT"]))
{
$result = $preparedData[$entityId]["DIRECT"];
}
else
{
$glParams = array(
'filter' => array(
"=".$entityType => $entityId,
"=LINK_DIRECTION" => $linkDirection
),
'select' => array($reverseEntityType)
);
$res = self::getList($glParams);
while($rec = $res->fetch())
$result[] = $rec[$reverseEntityType];
}
//if entity has links they must be actual
if(!empty($result))
{
if($considerParent)
{
if($entityType == self::ENTITY_TYPE_PAYSYSTEM)
{
$result = self::includeDeliveryByParent($result);
$result = self::excludeDeliveryByParent($result);
}
elseif($entityType == self::ENTITY_TYPE_DELIVERY && $parentId > 0)
{
$result = self::considerDeliveryParent($result, $entityId, $parentId, $preparedData);
}
}
return $result;
}
if(isset($preparedData[$entityId]["REVERSE"]))
{
$result = $preparedData[$entityId]["REVERSE"];
}
else
{
$glParams = array(
'filter' => array(
"=".$entityType => $entityId,
"=LINK_DIRECTION" => $reverseLinkDirection
),
'select' => array($reverseEntityType)
);
$res = self::getList($glParams);
while($rec = $res->fetch())
$result[] = $rec[$reverseEntityType];
}
$result = array_merge($result, self::getUnlinkedEnityItems($reverseEntityType, $reverseLinkDirection));
if($considerParent)
{
if($entityType == self::ENTITY_TYPE_DELIVERY && $parentId > 0)
{
$result = self::considerDeliveryParent($result, $entityId, $parentId, $preparedData);
}
elseif($entityType == self::ENTITY_TYPE_PAYSYSTEM && !empty($result))
{
$result = self::excludeDeliveryByParent($result);
}
}
return $result;
}