• Модуль: scale
  • Путь к файлу: ~/bitrix/modules/scale/lib/sitesdata.php
  • Класс: BitrixScaleSitesData
  • Вызов: SitesData::getList
static function getList($dbName = false)
{
	static $hitCache = null;

	if($hitCache === null)
	{
		$resSite = array();
		$shellAdapter = new ShellAdapter();
		$execRes = $shellAdapter->syncExec("sudo -u root /opt/webdir/bin/bx-sites -o json -a list --hiden");
		$sitesData = $shellAdapter->getLastOutput();

		if($execRes)
		{
			$arData = json_decode($sitesData, true);

			if(isset($arData["params"]))
				$resSite = $arData["params"];

			$domains = array();
			$sdRes = SiteDomainTable::getList();

			while($dom = $sdRes->fetch())
			{
				if(isset($domains[$dom['LID']]))
					$domains[$dom['LID']] .= ', ';
				else
					$domains[$dom['LID']] = '';

				$domains[$dom['LID']] .= $dom['DOMAIN'];
			}

			$rsSite = BitrixMainSiteTable::getList();

			while ($site = $rsSite->fetch())
			{
				foreach($resSite as $siteId => $siteInfo)
				{
					$docRoot = $site["DOC_ROOT"] <> '' ? $site["DOC_ROOT"] : BitrixMainApplication::getDocumentRoot();

					if($siteInfo["DocumentRoot"] == $docRoot)
					{
						$resSite[$siteId]["NAME"] = $site["NAME"]." (".$site["LID"].") ";
						$resSite[$siteId]["LID"] = $site["LID"];
						$resSite[$siteId]["EMAIL"] = $site["EMAIL"];
						$resSite[$siteId]["DOMAINS"] = isset($domains[$site["LID"]]) ? $domains[$site["LID"]] : '';
					}
					else
					{
						$resSite[$siteId]["NAME"] = $siteId;
					}

					$resSite[$siteId]["SMTP_USE_AUTH"] = ($siteInfo['SMTPPassword'] !== null && $siteInfo['SMTPUser'] !== null) ? 'Y' : 'N';
				}
			}
		}

		$hitCache = $resSite;
	}

	if($dbName != false && !empty($hitCache))
	{
		$result = array();

		foreach($hitCache as $siteId => $siteInfo)
			if($siteInfo['DBName'] == $dbName)
				$result[$siteId] = $siteInfo;
	}
	else
	{
		$result = $hitCache;
	}

	return $result;
}