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