• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/component/entitylist/clientdataprovider/kanbandataprovider.php
  • Класс: Bitrix\Crm\Component\EntityList\ClientDataProvider\KanbanDataProvider
  • Вызов: KanbanDataProvider::appendResult
public function appendResult(array &$items, array $fieldsToAdd): void
{
	if (empty($this->realSelectFields))
	{
		if ($this->addRawIdToSelect)
		{
			$this->addRawIdToResult($deals);
		}
		return;
	}

	$entityTypeName = \CCrmOwnerType::ResolveName($this->clientEntityTypeId);
	$fieldPrefix = strtolower($entityTypeName);
	$clientFieldId = $this->fieldHelper->addPrefixToFieldId(self::ID_FIELD);
	$clientIds = $this->extractClientIds($items, $clientFieldId);
	if (empty($clientIds))
	{
		return;
	}
	$clientsInfo = $this->loadClientsInfo($clientIds);

	$rawIdFieldId = $this->fieldHelper->addPrefixToFieldId(self::RAW_ID_FIELD);

	$itemsWithClientsInfo = $items;
	foreach ($itemsWithClientsInfo as $id => $item)
	{
		$clientId = $item[$clientFieldId] ?? 0;
		if ($this->addRawIdToSelect && $clientId > 0)
		{
			$item[$rawIdFieldId] = $clientId;
		}
		if ($clientId > 0 && isset($clientsInfo[$clientId]))
		{
			$item = array_merge(
				$item,
				$clientsInfo[$clientId]
			);
		}
		$itemsWithClientsInfo[$id] = $item;
	}

	$allFields = $this->getPopupFields();

	foreach ($items as $id => $item)
	{
		$clientId = $item[$clientFieldId] ?? 0;
		if ($clientId > 0 && isset($clientsInfo[$clientId]))
		{
			$title = $this->formatTitle($clientsInfo[$clientId]);
			$items[$id][$fieldPrefix . 'Name'] = htmlspecialcharsbx($title);

			if ($clientsInfo[$clientId][$entityTypeName . '_IS_ACCESSIBLE'])
			{
				$items[$id][$fieldPrefix . 'Tooltip'] = \CCrmViewHelper::PrepareEntityBaloonHtml([
					'ENTITY_TYPE_ID' => $this->clientEntityTypeId,
					'ENTITY_ID' => $item[$clientFieldId],
					'TITLE' => $title,
					'PREFIX' => $entityTypeName . '_' . $item['ID'],
				]);
			}
			else
			{
				$items[$id][$fieldPrefix . 'Tooltip'] = $items[$id][$fieldPrefix . 'Name'];
			}

			$items[$id]['ADDITIONAL_' . $entityTypeName . '_INFO'] = $this->getAdditionalClientInfo($clientsInfo[$clientId]);

			foreach ($fieldsToAdd as $fieldId)
			{
				if (
					isset($allFields[$fieldId])
					&& mb_strpos($fieldId, $this->fieldHelper->getFieldPrefix()) === 0
				)
				{
					$value = $itemsWithClientsInfo[$id][$fieldId] ?? '';
					if ($value !== '' && $value !== [])
					{
						$items[$id][$fieldId] = $value;
					}
				}
			}
		}
		else
		{
			$items[$id][$clientFieldId] = null;
		}
	}
}