• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/web/webpacker/builder.php
  • Класс: BitrixMainWebWebPackerBuilder
  • Вызов: Builder::getDefaultSiteUri
static function getDefaultSiteUri()
{
	if (self::$siteUri)
	{
		return self::$siteUri;
	}

	$url = ConfigConfiguration::getValue('main.webpacker')['last_site_url'] ?? '';
	if ($url)
	{
		self::$siteUri = $url;
		return $url;
	}

	$server = Context::getCurrent()->getServer();
	$url = $server->getHttpHost();

	$canSave = !empty($url) && (!defined('BX_CRONTAB') || !BX_CRONTAB);
	$isRestored = false;

	if (!$url)
	{
		$url = ConfigOption::get('main', 'last_site_url', null);
		if ($url)
		{
			$isRestored = true;
		}
		else
		{
			$url = ConfigOption::get('main', 'server_name', null);
			$url = $url ?: $server->getServerName();
			if (!$url)
			{
				$defaultSites = CSite::getDefList();
				while($defaultSite = $defaultSites->fetch())
				{
					$url = $defaultSite['SERVER_NAME'];
					if ($url)
					{
						break;
					}
				}
			}
		}
	}

	if (!$isRestored)
	{
		if (strpos($url, ':') === false && $server->getServerPort())
		{
			if (!in_array($server->getServerPort(), array('80', '443')))
			{
				$url .= ':' . $server->getServerPort();
			}
		}

		$url = (Context::getCurrent()->getRequest()->isHttps() ? "https" : "http")
			. "://" . $url;
	}

	$uri = new Uri($url);
	$url = $uri->getLocator();
	if (mb_substr($url, -1) == '/')
	{
		$url = mb_substr($url, 0, -1);
	}

	if ($canSave)
	{
		ConfigOption::set('main', 'last_site_url', $url);
	}

	self::$siteUri = $url;
	return $url;
}