- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/component/workgrouplist/counter.php
- Класс: BitrixSocialnetworkComponentWorkgroupListCounter
- Вызов: Counter::getCounterData
static function getCounterData(array $params = []): array
{
static $tasksCounterCache = [];
$result = [];
$mode = ($params['mode'] ?? WorkgroupList::MODE_COMMON);
$groupIdList = $params['groupIdList'] ?? [];
if (empty($groupIdList))
{
return $result;
}
$scrumIdList = $params['scrumIdList'] ?? [];
$currentUserId = static::getCurrentUserId();
if ($currentUserId <= 0)
{
return $result;
}
$tasksModuleInstalled = Loader::includeModule('tasks');
if (in_array($mode, WorkgroupList::getTasksModeList(), true))
{
$projectCounter = (
$mode === WorkgroupList::MODE_TASKS_SCRUM
? new ScrumCounter($currentUserId)
: new ProjectCounter($currentUserId)
);
foreach ($groupIdList as $groupId)
{
$counterData = $projectCounter->getRowCounter($groupId);
$result[$groupId] = [
'all' => [
'VALUE' => $counterData['VALUE'],
'COLOR' => $counterData['COLOR'],
],
];
}
}
else
{
$counters = CUserCounter::getValues($currentUserId);
if (!isset($tasksCounterCache[$currentUserId]))
{
$tasksCounterCache[$currentUserId] = TasksCounter::getInstance($currentUserId);
}
$tasksCounter = $tasksCounterCache[$currentUserId];
foreach ($groupIdList as $groupId)
{
$counterKey = CUserCounter::LIVEFEED_CODE . 'SG' . $groupId;
$result[$groupId] = [
'livefeed' => [
'VALUE' => (int)($counters[$counterKey] ?? 0),
],
];
if ($tasksModuleInstalled)
{
$result[$groupId]['tasks_expired'] = [
'VALUE' => (
in_array($groupId, $scrumIdList, true)
? 0
: $tasksCounter->get(TasksCounterCounterDictionary::COUNTER_EXPIRED, $groupId)
)
];
$result[$groupId]['tasks_new_comments'] = [
'VALUE' => $tasksCounter->get(TasksCounterCounterDictionary::COUNTER_NEW_COMMENTS, $groupId),
];
}
}
}
return $result;
}