- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/integration/crm/connectors/helper.php
- Класс: Bitrix\Sender\Integration\Crm\Connectors\Helper
- Вызов: Helper::getFilterByFields
static function getFilterByFields(array $fields = array(), array $values = array(), $entityTypeName = '') { if ($entityTypeName) { if (!empty(self::$runtimeByEntity[$entityTypeName])) { self::$runtimeByEntity[$entityTypeName] = []; } } else { self::$runtimeByEntity = []; } $filter = array(); foreach ($fields as $field) { if (!self::isFieldFilterable($field, $values)) { continue; } $isMultiple = false; if (isset($field['params']) && is_array($field['params'])) { if (isset($field['params']['multiple']) && $field['params']['multiple']) { $isMultiple = true; } } $id = $field['id']; $value = $values[$id]; $value = $isMultiple && !is_array($value) ? array($value) : ($value === "" ? null:$value); if($isMultiple) { foreach($value as &$val) { if($val === "") { $val = null; } } } $field['value'] = $value; if ($field['filter_callback'] ?? false) { $extraCallbackParams = [ 'FIELD' => $field, 'ENTITY_TYPE_NAME' => $entityTypeName ]; call_user_func_array($field['filter_callback'], [$value, &$filter, $extraCallbackParams]); continue; } $filterKey = self::getFilterFieldKey($field); if (is_array($filterKey)) { foreach ($filterKey as $fieldValue => $fieldFilter) { if ($value !== $fieldValue) { continue; } $filter[$fieldFilter[0]] = $fieldFilter[1]; } } elseif (self::isFieldTypeFilter($field['type'])) { self::setFieldTypeFilter($filterKey, $field, $filter); self::processRuntimeFilter($filter, $entityTypeName); } else { $filter[$filterKey] = $value; } } return $filter; }