- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/main/uiselector/crmorders.php
- Класс: Bitrix\Crm\Integration\Main\UISelector\CrmOrders
- Вызов: CrmOrders::getSearchFilter
protected function getSearchFilter(string $search, array $options)
{
global $USER;
$operation = Loader::includeModule('sale') ? '*' : '*%';
$filter = [$operation . 'SEARCH_CONTENT' => CrmEntity::prepareToken($search)];
if (!(is_object($USER) && $USER->isAdmin()))
{
$queryOptions = [
'RAW_QUERY' => true,
'PERMS'=> CCrmPerms::getCurrentUserPermissions()
];
$permissionSql = CCrmPerms::buildSql(
static::getOwnerTypeName(),
'',
'READ',
$queryOptions
);
if($permissionSql <> '')
{
$filter['@ID'] = new SqlExpression($permissionSql);
}
}
$subFilter = [
'%ORDER_TOPIC' => $search,
'LOGIC' => 'OR'
];
if (is_numeric($search))
{
$subFilter['ID'] = (int)$search;
$subFilter['%ACCOUNT_NUMBER'] = $search;
}
else if (preg_match('/( . *)\[(\d+?)\]/i' . BX_UTF_PCRE_MODIFIER, $search, $matches))
{
$subFilter['ID'] = (int)$matches[2];
$subFilter['%ACCOUNT_NUMBER'] = trim($matches[1]);
}
else
{
$subFilter['%ACCOUNT_NUMBER'] = $search;
}
if (!empty($filter))
{
$filter[] = $subFilter;
}
return empty($filter) ? false : $this->prepareOptionalFilter($filter, $options);
}