- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/timeline/entity/timelinebinding.php
- Класс: Bitrix\Crm\Timeline\Entity\TimelineBindingTable
- Вызов: TimelineBindingTable::detach
static function detach($srcEntityTypeID, $srcEntityID, $targEntityTypeID, $targEntityID, array $typeIDs)
{
$srcEntityTypeID = (int)$srcEntityTypeID;
$srcEntityID = (int)$srcEntityID;
$targEntityTypeID = (int)$targEntityTypeID;
$targEntityID = (int)$targEntityID;
$connection = Main\Application::getConnection();
$typeIDs = array_filter(array_map('intval', $typeIDs));
if(!empty($typeIDs))
{
$typeSql = implode(',', $typeIDs);
$connection->queryExecute("
DELETE b1 FROM b_crm_timeline_bind b1
INNER JOIN b_crm_timeline_bind b2 ON
b2.OWNER_ID = b1.OWNER_ID AND
b2.ENTITY_TYPE_ID = {$srcEntityTypeID} AND
b2.ENTITY_ID = {$srcEntityID}
INNER JOIN b_crm_timeline t ON
t.ID = b2.OWNER_ID AND
t.TYPE_ID IN ({$typeSql})
WHERE
b1.ENTITY_TYPE_ID = {$targEntityTypeID} AND
b1.ENTITY_ID = {$targEntityID}"
);
}
else
{
$connection->queryExecute("
DELETE b1 FROM b_crm_timeline_bind b1
INNER JOIN b_crm_timeline_bind b2 ON
b2.OWNER_ID = b1.OWNER_ID AND
b2.ENTITY_TYPE_ID = {$srcEntityTypeID} AND
b2.ENTITY_ID = {$srcEntityID}
WHERE
b1.ENTITY_TYPE_ID = {$targEntityTypeID} AND
b1.ENTITY_ID = {$targEntityID}"
);
}
if (\CCrmOwnerType::IsDefined($targEntityTypeID) && $targEntityID > 0)
{
Monitor::getInstance()->onTimelineEntryRemove(new ItemIdentifier($targEntityTypeID, $targEntityID));
}
self::cleanCache();
}