- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/integration/crm/connectors/helper.php
- Класс: Bitrix\Sender\Integration\Crm\Connectors\Helper
- Вызов: Helper::getFilterByEntity
static function getFilterByEntity(array $fields = array(), array $values = array(), array $entityTypeNames = array())
{
$map = array();
foreach ($entityTypeNames as $entityTypeName)
{
$map[$entityTypeName] = array($entityTypeName);
}
$map['CLIENT'] = array(\CCrmOwnerType::CompanyName, \CCrmOwnerType::ContactName);
$map[\CCrmOwnerType::CompanyName] = array(\CCrmOwnerType::CompanyName);
$map[\CCrmOwnerType::ContactName] = array(\CCrmOwnerType::ContactName);
$result = array();
foreach ($fields as $field)
{
if (!self::isFieldFilterable($field, $values))
{
continue;
}
$id = $field['id'];
foreach ($map as $prefix => $entityTypes)
{
$search = $prefix . '_';
if (mb_strpos($id, $search) !== 0)
{
continue;
}
foreach ($entityTypes as $entityTypeName)
{
$filterKey = "$entityTypeName.".mb_substr($id, mb_strlen($search));
if (!self::isFieldTypeFilter($field['type']))
{
$filterKey = "=$filterKey";
}
if ($field['multiple_uf'] ?? false)
{
$filterKey .= "_SINGLE";
}
$field['sender_segment_filter'] = $filterKey;
if (!isset($result[$entityTypeName]))
{
$result[$entityTypeName] = array();
}
$result[$entityTypeName][] = $field;
}
break;
}
}
self::$runtimeByEntity = [];
foreach ($result as $entityTypeName => $fields)
{
$items = self::getFilterByFields($fields, $values, $entityTypeName);
$result[$entityTypeName] = $items;
}
return $result;
}