• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/componenthelper.php
  • Класс: BitrixSocialnetworkComponentHelper
  • Вызов: ComponentHelper::getUserSonetGroupIdList
static function getUserSonetGroupIdList($userId = false, $siteId = false)
{
	$result = array();

	if ((int)$userId <= 0)
	{
		global $USER;
		$userId = (int)$USER->getId();
	}

	if (!$siteId)
	{
		$siteId = SITE_ID;
	}

	$currentCache = BitrixMainDataCache::createInstance();

	$cacheTtl = defined("BX_COMP_MANAGED_CACHE") ? 3153600 : 3600*4;
	$cacheId = 'user_group_member'.$siteId.'_'.$userId;
	$cacheDir = '/sonet/user_group_member/'.$siteId.'/'.$userId;

	if($currentCache->startDataCache($cacheTtl, $cacheId, $cacheDir))
	{
		global $CACHE_MANAGER;

		$res = UserToGroupTable::getList(array(
			'filter' => array(
				'<=ROLE' => UserToGroupTable::ROLE_USER,
				'=USER_ID' => $userId,
				'=GROUP.ACTIVE' => 'Y',
				'=GROUP.WorkgroupSite:GROUP.SITE_ID' => $siteId
			),
			'select' => array('GROUP_ID')
		));

		while ($record = $res->fetch())
		{
			$result[] = $record["GROUP_ID"];
		}

		if(defined("BX_COMP_MANAGED_CACHE"))
		{
			$CACHE_MANAGER->startTagCache($cacheDir);
			$CACHE_MANAGER->registerTag("sonet_user2group_U".$userId);
			$CACHE_MANAGER->endTagCache();
		}
		$currentCache->endDataCache($result);
	}
	else
	{
		$result = $currentCache->getVars();
	}

	return $result;
}