• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar.php
  • Класс: CCalendar
  • Вызов: CCalendar::GetPathForCalendarEx
static function GetPathForCalendarEx($userId = 0)
{
	$userId = (int)$userId;

	$cacheId = 'calendar_path_settings_'.$userId;
	$obCache = new CPHPCache;

	if($obCache->InitCache(3600 * 6, $cacheId, '/calendar/'.$cacheId))
	{
		$calendarUrl = $obCache->GetVars();
	}
	else
	{
		$obCache->StartDataCache();

		$bExtranet = Loader::includeModule('extranet');
		// It's extranet user
		if ($bExtranet && self::IsExtranetUser($userId))
		{
			$siteId = CExtranet::GetExtranetSiteID();
		}
		else
		{
			$siteId = $bExtranet && !self::IsExtranetUser($userId)
				? CSite::GetDefSite()
				: self::GetSiteId();

			if (self::$siteId == $siteId
				&& isset(self::$pathesForSite)
				&& is_array(self::$pathesForSite))
			{
				self::$pathes[$siteId] = self::$pathesForSite;
			}
		}

		if (!isset(self::$pathes[$siteId]) || !is_array(self::$pathes[$siteId]))
		{
			self::$pathes[$siteId] = self::GetPathes($siteId);
		}

		$calendarUrl = self::$pathes[$siteId]['path_to_user_calendar'] ?? '';
		$calendarUrl = str_replace(array('#user_id#', '#USER_ID#'), $userId, $calendarUrl);
		$calendarUrl = self::GetServerPath().$calendarUrl;

		$obCache->EndDataCache($calendarUrl);
	}

	return $calendarUrl;
}