• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/recycling/relationmap.php
  • Класс: Bitrix\Crm\Recycling\RelationMap
  • Вызов: RelationMap::build
public function build()
{
	if($this->isBuilt)
	{
		return;
	}

	$this->sourceMap = [];
	$this->destinationMap = [];

	if(empty($this->relations))
	{
		$this->isBuilt = true;
		return;
	}

	foreach($this->relations as $relation)
	{
		/** @var Relation $relation */
		$sourceEntityTypeID = $relation->getSourceEntityTypeID();
		$sourceEntityID = $relation->getSourceEntityID();

		$destinationEntityTypeID = $relation->getDestinationEntityTypeID();
		$destinationEntityID = $relation->getDestinationEntityID();

		if($this->entityTypeID === $sourceEntityTypeID && $this->entityID === $sourceEntityID)
		{
			if(!isset($this->destinationMap[$destinationEntityTypeID]))
			{
				$this->destinationMap[$destinationEntityTypeID] = [];
			}

			$this->destinationMap[$destinationEntityTypeID][] = $destinationEntityID;
		}
		elseif($this->entityTypeID === $destinationEntityTypeID && $this->entityID === $destinationEntityID)
		{
			if(!isset($this->sourceMap[$sourceEntityTypeID]))
			{
				$this->sourceMap[$sourceEntityTypeID] = [];
			}

			$this->sourceMap[$sourceEntityTypeID][] = $sourceEntityID;
		}
	}
	$this->isBuilt = true;
}