• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/component/workgrouplist/counter.php
  • Класс: BitrixSocialnetworkComponentWorkgroupListCounter
  • Вызов: Counter::fillCommonCounters
static function fillCommonCounters(array $params = []): array
{
	$result = [];

	$groupIdList = $params['groupIdList'] ?? [];
	if (empty($groupIdList))
	{
		return $result;
	}

	$counterData = $params['counterData'] ?? [];

	$scrumIdList = $params['scrumIdList'] ?? [];

	$groupUrlTemplate = ($params['groupUrl'] ?? HelperPath::get('group_livefeed_path_template'));
	$sliderOptionsData = ($params['sliderOptions'] ?? static::getLivefeedCounterSliderOptions());

	$tasksModuleInstalled = ModuleManager::isModuleInstalled('tasks');

	foreach ($groupIdList as $groupId)
	{
		$groupCounterData = ($counterData[$groupId] ?? []);

		$livefeedCounterValue = (int)($groupCounterData['livefeed']['VALUE'] ?? 0);
		$tasksCounterValue = (
			$tasksModuleInstalled
				? (int)($groupCounterData['tasks_expired']['VALUE'] ?? 0)
					+ (int)($groupCounterData['tasks_new_comments']['VALUE'] ?? 0)
				: 0
		);

		$groupUrl = str_replace([ '#id#', '#ID#', '#GROUP_ID#', '#group_id#' ], $groupId, $groupUrlTemplate);

		if (in_array($groupId, $scrumIdList, true))
		{
			$sliderOptionsData['loader'] = 'intranet:scrum';
		}

		$sliderOptions = Json::encode($sliderOptionsData);

		$result[$groupId] = [
			static::getLivefeedCounterColumnId() => [
				'type' => GridCounterType::RIGHT,
				'color' => GridCounterColor::DANGER,
				'value' => $livefeedCounterValue + $tasksCounterValue,
				'events' => [
					'click' => "BX.SidePanel.Instance.open.bind(BX.SidePanel.Instance, '{$groupUrl}', {$sliderOptions})",
				],
				'class' => 'sonet-ui-grid-counter',
			],
		];
	}

	return $result;
}