- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/componenthelper.php
- Класс: BitrixSocialnetworkComponentHelper
- Вызов: ComponentHelper::getSonetGroupAvailable
static function getSonetGroupAvailable($params = array(), &$limitReached = false)
{
global $USER;
$currentUserId = $USER->getId();
$limit = (isset($params['limit']) && (int)$params['limit'] > 0 ? (int)$params['limit'] : 500);
$useProjects = (!empty($params['useProjects']) && $params['useProjects'] === 'Y' ? 'Y' : 'N');
$siteId = (!empty($params['siteId']) ? $params['siteId'] : SITE_ID);
$landing = (!empty($params['landing']) && $params['landing'] === 'Y' ? 'Y' : '');
$currentCache = BitrixMainDataCache::createInstance();
$cacheTtl = defined("BX_COMP_MANAGED_CACHE") ? 3153600 : 3600*4;
$cacheId = 'dest_group_'.$siteId.'_'.$currentUserId.'_'.$limit.$useProjects.$landing;
$cacheDir = '/sonet/dest_sonet_groups/'.$siteId.'/'.$currentUserId;
if($currentCache->startDataCache($cacheTtl, $cacheId, $cacheDir))
{
global $CACHE_MANAGER;
$limitReached = false;
$filter = [
'features' => array("blog", array("premoderate_post", "moderate_post", "write_post", "full_post")),
'limit' => $limit,
'useProjects' => $useProjects,
'site_id' => $siteId,
];
if ($landing === 'Y')
{
$filter['landing'] = 'Y';
}
$groupList = CSocNetLogDestination::getSocnetGroup($filter, $limitReached);
if(defined("BX_COMP_MANAGED_CACHE"))
{
$CACHE_MANAGER->startTagCache($cacheDir);
foreach($groupList as $group)
{
$CACHE_MANAGER->registerTag("sonet_features_G_".$group["entityId"]);
$CACHE_MANAGER->registerTag("sonet_group_".$group["entityId"]);
}
$CACHE_MANAGER->registerTag("sonet_user2group_U".$currentUserId);
if ($landing === 'Y')
{
$CACHE_MANAGER->registerTag("sonet_group");
}
$CACHE_MANAGER->endTagCache();
}
$currentCache->endDataCache(array(
'groups' => $groupList,
'limitReached' => $limitReached
));
}
else
{
$tmp = $currentCache->getVars();
$groupList = $tmp['groups'];
$limitReached = $tmp['limitReached'];
}
if (
!$limitReached
&& CSocNetUser::isCurrentUserModuleAdmin()
)
{
$limitReached = true;
}
return $groupList;
}