- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/integration/crm/connectors/client.php
- Класс: Bitrix\Sender\Integration\Crm\Connectors\Client
- Вызов: Client::getCrmEntityFilter
protected function getCrmEntityFilter($entityTypeName, $isReferenced = false)
{
if ($this->crmEntityFilter === null)
{
$this->crmEntityFilter = Helper::getFilterByEntity(
self::getUiFilterFields(),
$this->getFieldValues(),
array_keys(self::getCrmDocumentTypes())
);
}
if (isset($this->crmEntityFilter[$entityTypeName]))
{
$filter = $this->crmEntityFilter[$entityTypeName];
}
else
{
$filter = array();
}
if ($isReferenced && count($filter) === 0)
{
return $filter;
}
$commonNames = ['ASSIGNED_BY_ID', 'EMAIL', 'PHONE', 'NAME'];
if ($isReferenced)
{
$commonNames = ['ASSIGNED_BY_ID'];
}
foreach ($commonNames as $commonName)
{
$value = $this->getFieldValue($commonName);
if (!$value)
{
continue;
}
if (in_array($commonName, ['EMAIL', 'PHONE', 'NAME']))
{
$commonName = "%$entityTypeName.$commonName";
}
else
{
$commonName = "=$entityTypeName.$commonName";
}
$filter[$commonName] = $value;
}
if ($isReferenced)
{
return $filter;
}
foreach ($filter as $key => $value)
{
$pattern = "/^([\W]{0,2})$entityTypeName\./";
if (!preg_match($pattern, $key))
{
continue;
}
unset($filter[$key]);
$key = preg_replace($pattern, '$1', $key);
$filter[$key] = $value;
}
return $filter;
}