• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/main.php
  • Класс: CAllMain
  • Вызов: CAllMain::GetSiteSwitcherArray
public function GetSiteSwitcherArray()
{
	$cur_dir = $this->GetCurDir();
	$cur_page = $this->GetCurPage();
	$bAdmin = (mb_substr($cur_dir, 0, mb_strlen(BX_ROOT."/admin/")) == BX_ROOT."/admin/");

	$path_without_lang = $path_without_lang_tmp = "";

	$db_res = CSite::GetList('', '', array("ACTIVE"=>"Y","ID"=>LANG));
	if(($ar = $db_res->Fetch()) && mb_strpos($cur_page, $ar["DIR"]) === 0)
	{
		$path_without_lang = mb_substr($cur_page, mb_strlen($ar["DIR"]) - 1);
		$path_without_lang = LTrim($path_without_lang, "/");
		$path_without_lang_tmp = RTrim($path_without_lang, "/");
	}

	$result = array();
	$db_res = CSite::GetList("SORT", "ASC", array("ACTIVE"=>"Y"));
	while($ar = $db_res->Fetch())
	{
		$ar["NAME"] = htmlspecialcharsbx($ar["NAME"]);
		$ar["SELECTED"] = ($ar["LID"]==LANG);

		if($bAdmin)
		{
			global $QUERY_STRING;
			$p = rtrim(str_replace("&#", "#", preg_replace("/lang=[^&#]*&*/", "", $QUERY_STRING)), "&");
			$ar["PATH"] = $this->GetCurPage()."?lang=".$ar["LID"].($p <> ''? '&'.$p : '');
		}
		else
		{
			$ar["PATH"] = "";

			if(mb_strlen($path_without_lang) > 1 && file_exists($ar["ABS_DOC_ROOT"]."/".$ar["DIR"]."/".$path_without_lang_tmp))
				$ar["PATH"] = $ar["DIR"].$path_without_lang;

			if($ar["PATH"] == '')
				$ar["PATH"] = $ar["DIR"];

			if($ar["ABS_DOC_ROOT"]!==$_SERVER["DOCUMENT_ROOT"])
				$ar["FULL_URL"] = (CMain::IsHTTPS() ? "https://" : "http://").$ar["SERVER_NAME"].$ar["PATH"];
			else
				$ar["FULL_URL"] = $ar["PATH"];
		}

		$result[] = $ar;
	}
	return $result;
}