- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/main/uiselector/crmdeals.php
- Класс: Bitrix\Crm\Integration\Main\UISelector\CrmDeals
- Вызов: CrmDeals::getData
public function getData($params = [])
{
$entityType = static::getHandlerType();
$result = [
'ITEMS' => [],
'ITEMS_LAST' => [],
'ITEMS_HIDDEN' => [],
'ADDITIONAL_INFO' => [
'GROUPS_LIST' => [
'crmdeals' => [
'TITLE' => Loc::getMessage('MAIN_UI_SELECTOR_TITLE_CRMDEALS'),
'TYPE_LIST' => [ $entityType ],
'DESC_LESS_MODE' => 'N',
'SORT' => 50,
]
],
'SORT_SELECTED' => 500,
],
];
$entityOptions = (!empty($params['options']) ? $params['options'] : []);
$prefix = static::getPrefix($entityOptions);
$lastItems = (!empty($params['lastItems']) ? $params['lastItems'] : []);
$selectedItems = (!empty($params['selectedItems']) ? $params['selectedItems'] : []);
$lastDealsIdList = [];
if(!empty($lastItems[$entityType]))
{
$result["ITEMS_LAST"] = array_map(
function($code) use ($prefix)
{
return preg_replace('/^'.self::PREFIX_FULL . '(\d+)$/', $prefix . '$1', $code);
},
array_values($lastItems[$entityType])
);
foreach ($lastItems[$entityType] as $value)
{
$lastDealsIdList[] = str_replace(self::PREFIX_FULL, '', $value);
}
}
$selectedDealsIdList = [];
if(!empty($selectedItems[$entityType]))
{
foreach ($selectedItems[$entityType] as $value)
{
$selectedDealsIdList[] = str_replace($prefix, '', $value);
}
}
$dealsIdList = array_merge($selectedDealsIdList, $lastDealsIdList);
$dealsIdList = array_slice($dealsIdList, 0, max(count($selectedDealsIdList), 20));
$dealsIdList = array_unique($dealsIdList);
$dealsList = [];
$filter = ['CHECK_PERMISSIONS' => 'Y'];
$order = [];
if (!empty($dealsIdList))
{
$filter['ID'] = $dealsIdList;
$navParams = false;
}
else
{
$order = ['ID' => 'DESC'];
$navParams = [ 'nTopCount' => 10 ];
}
if (
isset($entityOptions['onlyWithEmail'])
&& $entityOptions['onlyWithEmail'] == 'Y'
)
{
$filter['=HAS_EMAIL'] = 'Y';
}
$res = CCrmDeal::getListEx(
$order,
$filter,
false,
$navParams,
$this->getSearchSelect()
);
while ($dealFields = $res->fetch())
{
$dealsList[$prefix . $dealFields['ID']] = static::prepareEntity($dealFields, $entityOptions);
}
if (empty($lastDealsIdList))
{
$result["ITEMS_LAST"] = array_keys($dealsList);
}
$result['ITEMS'] = $dealsList;
if (!empty($selectedItems[$entityType]))
{
$hiddenItemsList = array_diff($selectedItems[$entityType], array_keys($dealsList));
$hiddenItemsList = array_map(
function($code) use ($prefix)
{
return preg_replace('/^' . $prefix . '(\d+)$/', '$1', $code);
},
$hiddenItemsList
);
if (!empty($hiddenItemsList))
{
$filter = [
'@ID' => $hiddenItemsList,
'CHECK_PERMISSIONS' => 'N'
];
if (
isset($entityOptions['onlyWithEmail'])
&& $entityOptions['onlyWithEmail'] == 'Y'
)
{
$filter['=HAS_EMAIL'] = 'Y';
}
$res = CCrmDeal::getListEx(
[],
$filter,
false,
false,
['ID']
);
while($dealFields = $res->fetch())
{
$result['ITEMS_HIDDEN'][] = $prefix . $dealFields["ID"];
}
}
}
return $result;
}