• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/counter/collector/usercollector.php
  • Класс: BitrixTasksInternalsCounterCollectorUserCollector
  • Вызов: UserCollector::recountComments
private function recountComments(string $taskFilter, array $mutedTasks): array
{
	$statement = [
		'join' => $this->getJoinForRecountComments(),
		'filter' => array_merge(
			[
				$taskFilter
			],
			$this->getConditionForRecountComments()
		),
	];

	$join = implode(' ', $statement['join']);
	$filter = implode(' AND ', $statement['filter']);

	$sql = "
		SELECT
		    T.ID,
			COUNT(DISTINCT FM.ID) as COUNT,
			T.GROUP_ID,
		   	TM.TYPE
		FROM b_tasks T
			{$join}
		WHERE
			{$filter}
		GROUP BY T.ID, TM.TYPE
	";

	$res = Application::getConnection()->query($sql);
	$rows = $res->fetchAll();

	$list = static::findTaskAllowedForMemberTypeOriginator($rows);

	$counters = [];
	foreach ($list as $row)
	{
		$type = $row['TYPE'];

		$counters[] = [
			'USER_ID'	=> $this->userId,
			'TASK_ID' 	=> (int) $row['ID'],
			'GROUP_ID' 	=> (int) $row['GROUP_ID'],
			'TYPE' 		=> in_array($row['ID'], $mutedTasks)
				? CounterDictionary::MAP_MUTED_COMMENTS[$type]
				: CounterDictionary::MAP_COMMENTS[$type],
			'VALUE' 	=> (int) $row['COUNT']
		];
	}

	return $counters;
}