• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/counter/processor/efficiencyprocessor.php
  • Класс: BitrixTasksInternalsCounterProcessorEfficiencyProcessor
  • Вызов: EfficiencyProcessor::recount
public function recount(array $ids)
{
	$eventCollection = EventCollection::getInstance();
	$deletedTasks = $eventCollection->getTasksByEventType(EventDictionary::EVENT_AFTER_TASK_DELETE);
	$addedTasks = $eventCollection->getTasksByEventType(EventDictionary::EVENT_AFTER_TASK_ADD);
	$restoredTasks = $eventCollection->getTasksByEventType(EventDictionary::EVENT_AFTER_TASK_RESTORE);
	$expiredTasks = $eventCollection->getTasksByEventType(EventDictionary::EVENT_TASK_EXPIRED);

	$processedUsers = [];

	foreach ($ids as $taskId)
	{
		if (in_array($taskId, $deletedTasks, true))
		{
			$processedUsers[] = $this->updateEfficiencyForDeletedAndAdded($taskId, true);
		}
		elseif (in_array($taskId, $addedTasks, true))
		{
			$processedUsers[] = $this->updateEfficiencyForDeletedAndAdded($taskId);
		}
		elseif (in_array($taskId, $restoredTasks, true))
		{
			$processedUsers[] = $this->updateEfficiencyForRestored($taskId);
		}
		elseif (in_array($taskId, $expiredTasks, true))
		{
			$processedUsers[] = $this->updateEfficiencyForExpired($taskId);
		}
		else
		{
			$processedUsers[] = $this->updateEfficiencyForUpdated($taskId);
		}
	}

	$processedUsers = array_unique(array_merge(...$processedUsers));
	foreach ($processedUsers as $userId)
	{
		Effective::recountEfficiencyUserCounter($userId);
	}
}