• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/counter/event/usereventprocessor.php
  • Класс: BitrixTasksInternalsCounterEventUserEventProcessor
  • Вызов: UserEventProcessor::handleUpdated
private function handleUpdated(array $toUpdate, array $toDelete, $readAll): array
{
	$taskIds = array_unique(array_merge($toUpdate[CounterDictionary::COUNTER_NEW_COMMENTS], $toUpdate[CounterDictionary::COUNTER_EXPIRED]));
	$taskIds = array_diff($taskIds, array_keys($toDelete));
	$members = $this->getTasksMembers($taskIds);

	foreach ($members as $userId => $taskIds)
	{
		$counterController = new CounterController($userId);
		if (
			$userId !== $readAll
			&& array_intersect($taskIds, $toUpdate[CounterDictionary::COUNTER_NEW_COMMENTS])
		)
		{
			$counterController->recount(CounterDictionary::COUNTER_NEW_COMMENTS, $taskIds);
		}
		if (array_intersect($taskIds, $toUpdate[CounterDictionary::COUNTER_EXPIRED]))
		{
			$counterController->recount(CounterDictionary::COUNTER_EXPIRED, $taskIds);
		}
	}

	$members = array_keys($members);

	if ($readAll)
	{
		$members[] = $readAll;
	}

	return $members;
}