DuplicateIndexBuilder::tryResolveRootEntity

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. DuplicateIndexBuilder
  4. tryResolveRootEntity
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integrity/duplicateindexbuilder.php
  • Класс: Bitrix\Crm\Integrity\DuplicateIndexBuilder
  • Вызов: DuplicateIndexBuilder::tryResolveRootEntity
protected function tryResolveRootEntity(Duplicate $item, $matchHash, array &$entityInfo)
{
	$entityTypeID = $this->getEntityTypeID();
	$entities = $item->getEntitiesByType($entityTypeID);

	/** @var DuplicateEntity[] $entities */
	$qty = count($entities);
	if($qty == 0)
	{
		return false;
	}
	elseif($qty === 1)
	{
		$entity = $entities[0];
		$entityID = $entity->getEntityID();

		$entityInfo['ENTITY_ID'] = $entityID;
		return true;
	}

	$entityID = $item->getRootEntityID();
	$entity = $entityID > 0 ? $item->findEntity($entityTypeID, $entityID) : null;
	if($entity)
	{
		if($this->checkRootEntityMismatches($entityID, $matchHash, $entities))
		{
			$entityInfo['ENTITY_ID'] = $entityID;
			return true;
		}
	}

	usort($entities, array('Bitrix\Crm\Integrity\DuplicateEntity', 'compareByRanking'));
	for($i = ($qty - 1); $i >= 0; $i--)
	{
		$entity = $entities[$i];
		if($entity->getCriterion() !== null)
		{
			continue;
		}

		$entityID = $entity->getEntityID();

		if($this->checkRootEntityMismatches($entityID, $matchHash, $entities))
		{
			$entityInfo['ENTITY_ID'] = $entityID;
			return true;
		}
	}
	return false;
}

Добавить комментарий