- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/internals/counter.php
- Класс: BitrixTasksInternalsCounter
- Вызов: Counter::getTaskCounters
public function getTaskCounters(int $taskId): ?array
{
if (!is_null($this->taskCounters))
{
return array_key_exists($taskId, $this->taskCounters) ? $this->taskCounters[$taskId] : null;
}
$counters = [];
$state = $this->getState();
foreach ($state as $row)
{
$id = $row['TASK_ID'];
if (!$taskId)
{
continue;
}
$type = $row['TYPE'];
$value = (int)$row['VALUE'];
if (!array_key_exists($id, $counters))
{
$counters[$id] = [
CounterDictionary::COUNTER_MY_NEW_COMMENTS => 0,
CounterDictionary::COUNTER_MY_EXPIRED => 0,
CounterDictionary::COUNTER_MY_MUTED_EXPIRED => 0,
CounterDictionary::COUNTER_MY_MUTED_NEW_COMMENTS => 0,
CounterDictionary::COUNTER_GROUP_EXPIRED => 0,
CounterDictionary::COUNTER_GROUP_COMMENTS => 0,
];
}
if (in_array($type, CounterDictionary::MAP_COMMENTS))
{
$counters[$id][CounterDictionary::COUNTER_MY_NEW_COMMENTS] = $value;
}
if (in_array($type, CounterDictionary::MAP_MUTED_COMMENTS))
{
$counters[$id][CounterDictionary::COUNTER_MY_MUTED_NEW_COMMENTS] = $value;
}
if (in_array($type, CounterDictionary::MAP_EXPIRED))
{
$counters[$id][CounterDictionary::COUNTER_MY_EXPIRED] = $value;
}
if (in_array($type, CounterDictionary::MAP_MUTED_EXPIRED))
{
$counters[$id][CounterDictionary::COUNTER_MY_MUTED_EXPIRED] = $value;
}
if (in_array($type, [
CounterDictionary::COUNTER_GROUP_COMMENTS,
CounterDictionary::COUNTER_GROUP_EXPIRED
]))
{
$counters[$id][$type] = $value;
}
}
foreach ($counters as $id => $values)
{
$projectExpired = $values[CounterDictionary::COUNTER_GROUP_EXPIRED] - $values[CounterDictionary::COUNTER_MY_EXPIRED];
$counters[$id][CounterDictionary::COUNTER_GROUP_EXPIRED] = ($projectExpired > 0) ? $projectExpired : 0;
$projectComments = $values[CounterDictionary::COUNTER_GROUP_COMMENTS] - $values[CounterDictionary::COUNTER_MY_NEW_COMMENTS];
$counters[$id][CounterDictionary::COUNTER_GROUP_COMMENTS] = ($projectComments > 0) ? $projectComments : 0;
}
$this->taskCounters = $counters;
return array_key_exists($taskId, $this->taskCounters) ? $this->taskCounters[$taskId] : null;
}