- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/Service/ParentFieldManager.php
- Класс: Bitrix\Crm\Service\ParentFieldManager
- Вызов: ParentFieldManager::loadParentElements
protected function loadParentElements(array $elementRelationsIds): void
{
foreach ($elementRelationsIds as $parentElementTypeId => $parentElementIds)
{
if (\CCrmOwnerType::isUseDynamicTypeBasedApproach($parentElementTypeId))
{
$factory = Container::getInstance()->getFactory($parentElementTypeId);
if ($factory)
{
$parentElements = $factory->getItemsFilteredByPermissions([
'select' => [
Item::FIELD_NAME_TITLE,
],
'filter' => [
'@' . Item::FIELD_NAME_ID => $parentElementIds,
]
]);
$router = Container::getInstance()->getRouter();
$items = [];
foreach ($parentElements as $parent)
{
$parentId = $parent->getId();
$url = $router->getItemDetailUrl(
$parent->getEntityTypeId(),
$parentId,
$parent->getCategoryId()
);
$title = HtmlFilter::encode($parent->getHeading());
$items[$parentId] = [
'id' => $parentId,
'code' => self::FIELD_PARENT_PREFIX . '_' . $parent->getEntityTypeId(),
'entityDescription' => HtmlFilter::encode($factory->getEntityDescription()),
'title' => $title,
'url' => $url,
'value' => '' . $title . '',
];
}
$this->parents[$parentElementTypeId] = $items;
}
}
else
{
$provider = $this->getItemsProvider($parentElementTypeId);
$methodName = 'getListEx';
$filter = [
'@ID' => $parentElementIds,
];
if (mb_strtolower($provider) === '\\' . mb_strtolower(\CCrmQuote::class))
{
$methodName = 'getList';
$filter['CHECK_PERMISSIONS'] = 'Y';
}
if (class_exists($provider) && method_exists($provider, $methodName))
{
$res = $provider::$methodName(
[],
$filter,
false,
[],
[
'ID',
'TITLE',
]
);
$items = [];
while ($parent = $res->fetch())
{
$parentId = $parent['ID'];
$url = $this->getUrl($parentId, \CCrmOwnerType::ResolveName($parentElementTypeId));
$title = HtmlFilter::encode($parent['TITLE']);
$entityDescription = HtmlFilter::encode(\CCrmOwnerType::GetDescription($parentElementTypeId));
$items[$parentId] = [
'id' => $parentId,
'code' => self::FIELD_PARENT_PREFIX . '_' . $parentElementTypeId,
'entityDescription' => $entityDescription,
'title' => $title,
'url' => $url,
'value' => '' . $title . '',
];
}
$this->parents[$parentElementTypeId] = $items;
}
}
}
}