• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/integration/socialnetwork/group.php
  • Класс: BitrixTasksIntegrationSocialNetworkGroup
  • Вызов: Group::getData
static function getData(array $groupIds, array $select = [], array $params = []): array
{
	$groupIds = array_unique(array_filter($groupIds, 'intval'));

	if (empty($groupIds) || !static::includeModule())
	{
		return [];
	}

	$defaultSelect = ['ID', 'NAME'];
	$parameters = [
		'select' => (empty($select) ? $defaultSelect : array_merge($defaultSelect, $select)),
		'filter' => ['ID' => $groupIds],
	];
	$expanded = (User::getOption('opened_projects') ?: []);

	// todo: make static caches here
	$groups = [];
	$groupResult = WorkgroupTable::getList($parameters);
	while ($group = $groupResult->fetch())
	{
		$groupId = $group['ID'];
		$group['EXPANDED'] = !(array_key_exists($groupId, $expanded) && $expanded[$groupId] === "false");
		$groups[$groupId] = $group;
	}

	if (
		!empty($groups)
		&& isset($params['MODE'])
		&& mb_strtolower($params['MODE']) === 'mobile'
	)
	{
		$additionalData = Workgroup::getAdditionalData([
			'ids' => array_keys($groups),
			'features' => BitrixMobileProjectHelper::getMobileFeatures(),
			'mandatoryFeatures' => BitrixMobileProjectHelper::getMobileMandatoryFeatures(),
			'currentUserId' => (int)($params['CURRENT_USER_ID'] ?? User::getId()),
		]);

		foreach (array_keys($groups) as $id)
		{
			if (!isset($additionalData[$id]))
			{
				continue;
			}

			$groups[$id]['ADDITIONAL_DATA'] = ($additionalData[$id] ?? []) ;
		}
	}
	return $groups;
}