- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/lib/component/userprofile/grats.php
- Класс: BitrixIntranetComponentUserProfileGrats
- Вызов: Grats::getGratitudes
public function getGratitudes()
{
global $CACHE_MANAGER;
$result = array();
if(
(
!Loader::includeModule("extranet")
|| CExtranet::isIntranetUser(SITE_ID, $this->getProfileId())
)
&& Loader::includeModule("iblock")
)
{
$badgesData = array();
$cache = new CPHPCache;
$cacheTime = (defined("BX_COMP_MANAGED_CACHE") ? 2592000 : 600);
$cacheId = $this->getProfileId();
$cachePath = "/user_grat_".intval($this->getProfileId() / TAGGED_user_card_size);
if ($cache->initCache($cacheTime, $cacheId, $cachePath))
{
$vars = $cache->getVars();
$badgesData = $vars['BADGES_DATA'];
$postIdList = $vars['POSTS_ID'];
$authorsList = $vars['AUTHORS_DATA'];
}
else
{
$cache->startDataCache($cacheTime, $cacheId, $cachePath);
if (defined("BX_COMP_MANAGED_CACHE"))
{
$CACHE_MANAGER->startTagCache($cachePath);
$CACHE_MANAGER->registerTag("BLOG_POST_GRATITUDE_TO_".$this->getProfileId());
}
$badgesData = [];
$iblockElementsIdList = [];
$authorsList = [];
if (Loader::includeModule('socialnetwork'))
{
$gratitudesData = BitrixSocialnetworkComponentLogList::getGratitudesIblockData([
'userId' => $this->getProfileId()
]);
$badgesData = $gratitudesData['BADGES_DATA'];
$iblockElementsIdList = $gratitudesData['ELEMENT_ID_LIST'];
}
$authorsIdList = [];
$postIdList = [];
if (!empty($iblockElementsIdList))
{
$gratitudesData = BitrixSocialnetworkComponentLogList::getGratitudesBlogData([
'iblockElementsIdList' => $iblockElementsIdList
]);
$iblockElementsIdList = $gratitudesData['ELEMENT_ID_LIST'];
$authorsIdList = $gratitudesData['AUTHOR_ID_LIST'];
$postIdList = $gratitudesData['POST_ID_LIST'];
}
foreach($badgesData as $badgeEnumId => $badgeData)
{
foreach($badgeData['ID'] as $key => $elementId)
{
if (in_array($elementId, $iblockElementsIdList))
{
$badgesData[$badgeEnumId]['COUNT']++;
}
else
{
unset($badgesData[$badgeEnumId]['ID'][$key]);
}
}
$badgesData[$badgeEnumId]['ID'] = array_values($badgesData[$badgeEnumId]['ID']);
}
if (!empty($authorsIdList))
{
$res = BitrixMainUserTable::getList(array(
'filter' => array(
'@ID' => $authorsIdList,
),
'select' => array('ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN', 'PERSONAL_PHOTO')
));
while($userFields = $res->fetch())
{
$authorsList[$userFields['ID']] = array_merge($userFields, array(
'NAME_FORMATTED' => CUser::formatName(CSite::getNameFormat(), $userFields, true, false),
'PHOTO' => BitrixIntranetComponentUserProfile::getUserPhoto($userFields["PERSONAL_PHOTO"], 100),
'URL' => CComponentEngine::makePathFromTemplate($this->getPathToUser(), array('user_id' => $userFields['ID']))
));
}
}
if(defined("BX_COMP_MANAGED_CACHE"))
{
$CACHE_MANAGER->EndTagCache();
}
$cache->endDataCache(array(
'BADGES_DATA' => $badgesData,
'POSTS_ID' => $postIdList,
'AUTHORS_DATA' => $authorsList
));
}
$result = array(
'BADGES' => $badgesData,
'POSTS_ID' => $postIdList,
'AUTHORS' => $authorsList
);
}
return $result;
}