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