• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/component/userprofile/grats.php
  • Класс: BitrixIntranetComponentUserProfileGrats
  • Вызов: Grats::getStub
public function getStub()
{
	global $USER;

	$result = array(
		'BADGES' => array()
	);

	$result['URL_ADD'] = CComponentEngine::makePathFromTemplate(
		$this->getPathToPostEdit(),
		array(
			"user_id" => $USER->getId(),
			"post_id" => 0
		)
	);

	$result['URL_LIST'] = CComponentEngine::makePathFromTemplate(
		$this->getPathToUserGrat(),
		array(
			"user_id" => $USER->getId()
		)
	);

	$uri = new BitrixMainWebUri($result['URL_ADD']);
	$result['URL_ADD'] = $uri->addParams(array("gratUserId" => $this->getProfileId()))->getUri();

	$cache = new CPHPCache;
	$cacheTime = 2592000;
	$cacheId = "user_grat_enum";
	$cachePath = "/user_grat_enum";

	if ($cache->initCache($cacheTime, $cacheId, $cachePath))
	{
		$vars = $cache->getVars();
		$badgesData = $vars['BADGES_DATA'];
	}
	else
	{
		$badgesData = array();

		$cache->startDataCache($cacheTime, $cacheId, $cachePath);

		$honourIblockId = $this->getGratitudesIblockId();

		if ($honourIblockId > 0)
		{
			$res = CIBlockPropertyEnum::getList(
				array("DEF"=>"DESC", "SORT"=>"ASC"),
				array(
					"IBLOCK_ID" => $honourIblockId,
					"CODE" => "GRATITUDE"
				)
			);
			while($enumFields = $res->fetch())
			{
				$badgesData[] = array(
					'ID' => $enumFields['ID'],
					'SORT' => $enumFields['SORT'],
					'CODE' => $enumFields['XML_ID'],
					'NAME' => $enumFields['VALUE'],
				);
			}
			usort($badgesData, function($a, $b) {
				if ($a['SORT'] == $b['SORT'])
				{
					return 0;
				}
				return ($a['SORT'] > $b['SORT']) ? +1 : -1;
			});
		}

		$cache->endDataCache(array(
			'BADGES_DATA' => $badgesData,
		));
	}

	if (
		is_array($badgesData)
		&& !empty($badgesData)
	)
	{
		$result['BADGES'] = $badgesData;
	}

	return $result;
}