- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_destination.php
- Класс: CSocNetLogDestination
- Вызов: CSocNetLogDestination::GetExtranetUser
static function GetExtranetUser(array $arParams = array())
{
global $USER, $CACHE_MANAGER;
static $resultCache = array();
$userId = (int)$USER->getID();
if(!isset($resultCache[$userId]))
{
$arUsers = Array();
if (CModule::IncludeModule('extranet') && !CExtranet::IsIntranetUser())
{
$cacheTtl = 3153600;
$cacheId = 'socnet_destination_getusers_'.md5(serialize($arParams)).'_'.$userId;
$cacheDir = '/socnet/dest_extranet/' . (int)($userId / 100) . '/' . $userId . '/';
$obCache = new CPHPCache;
if($obCache->initCache($cacheTtl, $cacheId, $cacheDir))
{
$arUsers = $obCache->getVars();
}
else
{
$obCache->startDataCache();
if(defined("BX_COMP_MANAGED_CACHE"))
{
$CACHE_MANAGER->StartTagCache($cacheDir);
}
if(defined("BX_COMP_MANAGED_CACHE"))
{
$CACHE_MANAGER->registerTag("sonet_user2group_U".$userId);
}
$workgroupIdList = [];
$res = CSocNetUserToGroup::getList(
array(),
array(
"USER_ID" => $userId,
"<=ROLE" => SONET_ROLES_USER,
"GROUP_SITE_ID" => 's1',
"GROUP_ACTIVE" => "Y",
"!GROUP_CLOSED" => "Y"
),
false,
false,
array("ID", "GROUP_ID")
);
while($relationFields = $res->fetch())
{
$workgroupIdList[] = (int)$relationFields["GROUP_ID"];
if(defined("BX_COMP_MANAGED_CACHE"))
{
$CACHE_MANAGER->registerTag("sonet_user2group_G".$relationFields["GROUP_ID"]);
}
}
$arUsers = [];
if (!empty($workgroupIdList))
{
$arUsers = self::getUsersAll([
'RETURN_FULL_LIST' => 'Y'
]);
if (defined("BX_COMP_MANAGED_CACHE"))
{
foreach($arUsers as $userData)
{
$CACHE_MANAGER->registerTag("USER_NAME_".(int)$userData['entityId']);
}
}
}
$obCache->endDataCache($arUsers);
}
}
$resultCache[$userId] = $arUsers;
}
return $resultCache[$userId];
}