- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/main/uiselector/crmorders.php
- Класс: Bitrix\Crm\Integration\Main\UISelector\CrmOrders
- Вызов: CrmOrders::getData
public function getData($params = [])
{
global $USER;
$entityType = static::getHandlerType();
$result = [
'ITEMS' => [],
'ITEMS_LAST' => [],
'ITEMS_HIDDEN' => [],
'ADDITIONAL_INFO' => [
'GROUPS_LIST' => [
'crmorders' => [
'TITLE' => Loc::getMessage('MAIN_UI_SELECTOR_TITLE_CRMORDERS'),
'TYPE_LIST' => [ $entityType ],
'DESC_LESS_MODE' => 'N',
'SORT' => 60,
],
],
'SORT_SELECTED' => 400,
],
];
$userPermissions = CCrmPerms::getCurrentUserPermissions();
if (!\Bitrix\Crm\Order\Permissions\Order::checkReadPermission(0, $userPermissions))
{
return $result;
}
$entityOptions = (!empty($params['options']) ? $params['options'] : []);
$prefix = static::getPrefix($entityOptions);
$lastItems = (!empty($params['lastItems']) ? $params['lastItems'] : []);
$selectedItems = (!empty($params['selectedItems']) ? $params['selectedItems'] : []);
$lastOrdersIdList = [];
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)
{
$lastOrdersIdList[] = intval(str_replace(self::PREFIX_FULL, '', $value));
}
}
$selectedOrdersIdList = [];
if(!empty($selectedItems[$entityType]))
{
foreach ($selectedItems[$entityType] as $value)
{
$selectedOrdersIdList[] = intval(str_replace($prefix, '', $value));
}
}
$ordersIdList = array_merge($selectedOrdersIdList, $lastOrdersIdList);
$ordersIdList = array_slice($ordersIdList, 0, max(count($selectedOrdersIdList), 20));
$ordersIdList = array_unique($ordersIdList);
$ordersList = [];
$filter = [];
$permissionSql = '';
if (!(is_object($USER) && $USER->isAdmin()))
{
$options = [
'RAW_QUERY' => true,
'PERMS'=> CCrmPerms::getCurrentUserPermissions()
];
if (!empty($ordersIdList))
{
$options['RESTRICT_BY_IDS'] = $ordersIdList;
}
$permissionSql = CCrmPerms::buildSql(
CCrmOwnerType::OrderName,
'',
'READ',
$options
);
}
if($permissionSql <> '')
{
$filter['@ID'] = new SqlExpression($permissionSql);
}
elseif (!empty($ordersIdList))
{
$filter['@ID'] = $ordersIdList;
}
if (empty($ordersIdList))
{
$order = ['ID' => 'DESC'];
$limit = 10;
}
else
{
$order = [];
$limit = 0;
}
$res = Order::getList([
'order' => $order,
'select' => $this->getSearchSelect(),
'filter' => $filter,
'limit' => $limit
]);
while ($orderFields = $res->fetch())
{
$ordersList[$prefix . $orderFields['ID']] = static::prepareEntity($orderFields, $entityOptions);
}
if (empty($lastOrdersIdList))
{
$result["ITEMS_LAST"] = array_keys($ordersList);
}
$result['ITEMS'] = $ordersList;
return $result;
}