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