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