- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/kanban/entity/entityactivities.php
- Класс: Bitrix\Crm\Kanban\Entity\EntityActivities
- Вызов: EntityActivities::prepareCounterFilter
protected function prepareCounterFilter(string $stage, array $filter): array
{
$counter = $this->getEntityCounterForStage($stage, $this->getActivityCounterFilterValue($filter));
if (!isset($counter))
{
return ['ID' => -1]; // @todo temporary do nothing
}
$entity = EntityManager::resolveByTypeID($this->entityTypeId);
$counterUserIds = [];
$excludeUsers = false;
$responsibleFiledName = CounterSettings::getInstance()->useActivityResponsible()
? 'ACTIVITY_RESPONSIBLE_IDS'
: 'ASSIGNED_BY_ID';
$currentUserId = Container::getInstance()->getContext()->getUserId();
if (isset($filter[$responsibleFiledName]) || isset($filter['!'.$responsibleFiledName]))
{
/** @var UserBasedField $userFieldPrepare */
$userFieldPrepare = ServiceLocator::getInstance()->get('crm.filter.fieldsTransform.userBasedField');
$userFieldPrepare->transformAll($filter, [$responsibleFiledName], $currentUserId);
$extractUsers = new ExtractUsersFromFilter();
[$counterUserIds, $excludeUsers] = $extractUsers->extract($filter, $responsibleFiledName);
}
else
{
$counterUserIds[] = $currentUserId;
}
return array_merge(
$filter,
$counter->prepareEntityListFilter(
[
'MASTER_ALIAS' => $entity->getDbTableAlias(),
'MASTER_IDENTITY' => 'ID',
'USER_IDS' => $counterUserIds,
'EXCLUDE_USERS' => $excludeUsers,
]
)
);
}