• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/timelineentry.php
  • Класс: Bitrix\Crm\Timeline\TimelineEntry
  • Вызов: TimelineEntry::prepareBindingChanges
static function prepareBindingChanges(array $origin, array $current, array &$added, array &$removed)
{
	$originMap = array();
	foreach($origin as $binding)
	{
		$entityTypeID = isset($binding['ENTITY_TYPE_ID']) ? (int)$binding['ENTITY_TYPE_ID'] : 0;
		$entityID = isset($binding['ENTITY_ID']) ? (int)$binding['ENTITY_ID'] : 0;
		if($entityTypeID <= 0 || $entityID <= 0)
		{
			continue;
		}

		$originMap["{$entityTypeID}:{$entityID}"] = $binding;
	}

	$currentMap = array();
	foreach($current as $binding)
	{
		$entityTypeID = isset($binding['ENTITY_TYPE_ID']) ? (int)$binding['ENTITY_TYPE_ID'] : 0;
		$entityID = isset($binding['ENTITY_ID']) ? (int)$binding['ENTITY_ID'] : 0;
		if($entityTypeID <= 0 || $entityID <= 0)
		{
			continue;
		}

		$currentMap["{$entityTypeID}:{$entityID}"] = $binding;
	}

	$originKeys = array_keys($originMap);
	$currentKeys = array_keys($currentMap);

	$removed = array();
	foreach(array_diff($originKeys, $currentKeys) as $key)
	{
		$removed[] = $originMap[$key];
	}

	$added = array();
	foreach(array_diff($currentKeys, $originKeys) as $key)
	{
		$added[] = $currentMap[$key];
	}
}