• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/util/site.php
  • Класс: BitrixTasksUtilSite
  • Вызов: Site::getSiteStruct
static function getSiteStruct()
{
	if (empty(self::$cache['SITE']))
	{
		$extranetSiteId = (Loader::includeModule('extranet') ? CExtranet::getExtranetSiteID() : false);
		$siteList = [
			'LIST' => [],
			'PAIR' => [
				'EXTRANET' => false,
				'INTRANET' => false,
			],
		];
		$res = CSite::getList('sort', 'desc', ['ACTIVE' => 'Y']);
		while ($site = $res->Fetch())
		{
			$siteId = $site['ID'];
			$siteDir = $site['DIR'];
			$siteServerName = $site['SERVER_NAME'];

			$siteList['LIST'][$siteId] = [
				'SITE_ID' => $siteId,
				'DIR' => ($siteDir && trim($siteDir) !== '' ? $siteDir : '/'),
				'SERVER_NAME' => (
					$siteServerName && trim($siteServerName) !== ''
						? $siteServerName
						: Option::get('main', 'server_name', $_SERVER['HTTP_HOST'] ?? null)
				),
			];

			if ($siteId == $extranetSiteId)
			{
				$siteList['PAIR']['EXTRANET'] =& $siteList['LIST'][$siteId];
			}
			// type == intranet
			elseif (!(isset($siteList['PAIR']['INTRANET']) && $site['DEF'] !== 'Y'))
			{
				$siteList['PAIR']['INTRANET'] =& $siteList['LIST'][$siteId];
			}
		}

		self::$cache['SITE'] = $siteList;
	}

	return self::$cache['SITE'];
}