• Модуль: 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,
			]
		)
	);
}