• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_event.php
  • Класс: CIMEvent
  • Вызов: CIMEvent::GetMessageRatingEntityURL
static function GetMessageRatingEntityURL($url, $user_id = false, $arSites = false, $intranet_site_id = false, $extranet_site_id = false)
{
	static $arSiteData = false;

	if (
		!$arSiteData
		&& IsModuleInstalled('intranet')
		&& CModule::IncludeModule('socialnetwork')
	)
	{
		$arSiteData = CSocNetLogTools::GetSiteData();
	}

	if (
		$arSiteData
		&& count($arSiteData) > 1
	)
	{
		foreach($arSiteData as $siteId => $arUrl)
		{
			$url = str_replace($arUrl["USER_PATH"], "#USER_PATH#", $url);
		}

		$arTmp = CSocNetLogTools::ProcessPath(
			[
				"URL" => $url
			],
			$user_id
		);

		$url = $arTmp["URLS"]["URL"];
		$url = (
			mb_strpos($url, "http://") === 0
			|| mb_strpos($url, "https://") === 0
				? ""
				: (
					isset($arTmp["SERVER_NAME"])
					&& !empty($arTmp["SERVER_NAME"])
						? $arTmp["SERVER_NAME"]
						: ""
				)
		).$arTmp["URLS"]["URL"];
	}
	else
	{
		if (
			is_array($arSites)
			&& intval($user_id) > 0
			&& $extranet_site_id <> ''
			&& $intranet_site_id <> ''
		)
		{
			$bExtranetUser = false;
			if ($arSites[$extranet_site_id])
			{
				$bExtranetUser = true;
				$rsUser = CUser::GetByID(intval($user_id));
				if ($arUser = $rsUser->Fetch())
				{
					if (intval($arUser["UF_DEPARTMENT"][0]) > 0)
					{
						$bExtranetUser = false;
					}
				}
			}

			if ($bExtranetUser)
			{
				$link = $url;
				if (mb_substr($link, 0, mb_strlen($arSites[$extranet_site_id]['DIR'])) == $arSites[$extranet_site_id]['DIR'])
				{
					$link = mb_substr($link, mb_strlen($arSites[$extranet_site_id]['DIR']));
				}

				$SiteServerName = $arSites[$extranet_site_id]['SERVER_NAME'].$arSites[$extranet_site_id]['DIR'].ltrim($link, "/");
			}
			else
			{
				$link = $url;
				if (mb_substr($link, 0, mb_strlen($arSites[$intranet_site_id]['DIR'])) == $arSites[$intranet_site_id]['DIR'])
				{
					$link = mb_substr($link, mb_strlen($arSites[$intranet_site_id]['DIR']));
				}

				$SiteServerName = $arSites[$intranet_site_id]['SERVER_NAME'].$arSites[$intranet_site_id]['DIR'].ltrim($link, "/");
			}

			$url = (CMain::IsHTTPS() ? "https" : "http")."://".$SiteServerName;
		}
		else
		{
			$SiteServerName = (defined('SITE_SERVER_NAME') && SITE_SERVER_NAME <> '' ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name", $_SERVER['SERVER_NAME']));
			if ($SiteServerName <> '')
			{
				$url = (CMain::IsHTTPS() ? "https" : "http")."://".$SiteServerName.$url;
			}
		}
	}

	return $url;
}