• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/rest/controllers/task.php
  • Класс: BitrixTasksRestControllersTask
  • Вызов: Task::fillGroupInfo
private function fillGroupInfo(array $rows, array $params = []): array
{
	static $groups = [];

	$groupIds = [];
	foreach ($rows as $id => $row)
	{
		if (
			array_key_exists('GROUP_ID', $row)
			&& !array_key_exists($row['GROUP_ID'], $groups)
		)
		{
			$groupIds[] = (int)$row['GROUP_ID'];
		}
		$rows[$id]['GROUP'] = [];
	}
	$groupIds = array_unique($groupIds);

	$params['CURRENT_USER_ID'] = (int)$this->getCurrentUser()->getId();

	$select = [
		'IMAGE_ID',
		'OPENED',
		'NUMBER_OF_MEMBERS',
		'AVATAR_TYPE'
	];
	$groupsData = SocialNetworkGroup::getData($groupIds, $select, $params);

	$avatarTypes = (Loader::includeModule('socialnetwork') ? BitrixSocialnetworkHelperWorkgroup::getAvatarTypes() : []);

	$groupsData = array_map(
		static function ($group) use ($avatarTypes) {

			$imageUrl = '';
			if (
				(int)$group['IMAGE_ID'] > 0
				&& is_array($file = CFile::GetFileArray($group['IMAGE_ID']))
			)
			{
				$imageUrl = $file['SRC'];
			}
			elseif (
				!empty($group['AVATAR_TYPE'])
				&& isset($avatarTypes[$group['AVATAR_TYPE']])
			)
			{
				$imageUrl = $avatarTypes[$group['AVATAR_TYPE']]['mobileUrl'];
			}

			return [
				'ID' => $group['ID'],
				'NAME' => $group['NAME'],
				'OPENED' => ($group['OPENED'] === 'Y'),
				'MEMBERS_COUNT' => (int)$group['NUMBER_OF_MEMBERS'],
				'IMAGE' => $imageUrl,
				'ADDITIONAL_DATA' => ($group['ADDITIONAL_DATA'] ?? []),
			];
		},
		$groupsData
	);
	foreach ($groupsData as $id => $data)
	{
		$groups[$id] = $data;
	}

	foreach ($rows as $id => $row)
	{
		if (array_key_exists('GROUP_ID', $row) && array_key_exists($row['GROUP_ID'], $groups))
		{
			$rows[$id]['GROUP'] = $groups[$row['GROUP_ID']];
		}
	}

	return $rows;
}