- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/integration/crm/connectors/querycount.php
- Класс: Bitrix\Sender\Integration\Crm\Connectors\QueryCount
- Вызов: QueryCount::exec
static function exec(Entity\Query $query, $dataTypeId = null, $entityDbName = null, $entityName = null)
{
$result = array();
$resultDb = Helper::prepareQuery($query, $dataTypeId, $entityDbName, $entityName)->exec();
while ($row = $resultDb->fetch())
{
$ignoredTypes = [];
foreach (self::getTypes() as $typeId => $field)
{
$fieldName = $field['COLUMN_ALIAS'] ?? 'COUNT_' . $field['DATA_COLUMN'];
if (!isset($row[$fieldName]))
{
continue;
}
$type = Recipient\Type::getCode($typeId);
if (!isset($result[$type]))
{
$result[$type] = 0;
}
$result[$type] += (int) $row[$fieldName];
if (isset($field['IGNORE_TYPES']) && $row[$fieldName] > 0)
{
$ignoredTypes = array_merge($ignoredTypes, $field['IGNORE_TYPES']);
}
}
foreach(array_unique($ignoredTypes) as $ignoreTypeId)
{
$ignoreType = Recipient\Type::getCode($ignoreTypeId);
unset($result[$ignoreType]);
}
}
return $result;
}