• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/rest.php
  • Класс: CSocNetLogRestService
  • Вызов: CSocNetLogRestService::getUserGroups
static function getUserGroups($arFields, $n, $server): array
{
	$res = CSocNetUserToGroup::getList(
		[ 'ID' => 'ASC' ],
		[
			'USER_ID' => self::getCurrentUserId(),
			'<=ROLE' => SONET_ROLES_USER
		],
		false,
		false,
		[ 'GROUP_ID', 'GROUP_NAME', 'ROLE', 'GROUP_IMAGE_ID' ]
	);

	$result = [];
	$files = [];
	while ($groupFields = $res->fetch())
	{
		if (!empty($groupFields['GROUP_NAME']))
		{
			$groupFields['GROUP_NAME'] = Emoji::decode($groupFields['GROUP_NAME']);
		}

		$groupFields['GROUP_IMAGE'] = '';
		$result[] = $groupFields;

		if ($groupFields['GROUP_IMAGE_ID'] > 0)
		{
			$files[] = (int)$groupFields['GROUP_IMAGE_ID'];
		}
	}

	if (
		!empty($result)
		&& ($extranetSiteId = self::getExtranetSiteId())
	)
	{
		$extranetWorkgroupIdList = [];
		$workgroupIdList = array_map(static function($item) { return $item['GROUP_ID']; }, $result);
		$res = BitrixSocialnetworkWorkgroupSiteTable::getList([
			'filter' => [
				'GROUP_ID' => $workgroupIdList,
				'SITE_ID' => $extranetSiteId
			],
			'select' => [ 'GROUP_ID' ]
		]);
		while ($workgroupSiteFields = $res->fetch())
		{
			$extranetWorkgroupIdList[] = (int)$workgroupSiteFields['GROUP_ID'];
		}

		if (!empty($extranetWorkgroupIdList))
		{
			foreach ($result as $key => $groupFields)
			{
				if (in_array((int)$groupFields['GROUP_ID'], $extranetWorkgroupIdList, true))
				{
					$result[$key]['IS_EXTRANET'] = 'Y';
				}
			}
		}
	}

	if (!empty($files))
	{
		$files = CRestUtil::getFile($files, [
			'width' => 150,
			'height' => 150,
		]);

		foreach ($result as $key => $groupFields)
		{
			if ($groupFields['GROUP_IMAGE_ID'] > 0)
			{
				$result[$key]['GROUP_IMAGE'] = $files[$groupFields['GROUP_IMAGE_ID']];
			}
		}
	}

	return $result;
}