• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/search/indexmanager.php
  • Класс: BitrixDiskSearchIndexManager
  • Вызов: IndexManager::resolveSiteId
static function resolveSiteId(Storage $storage)
{
	$siteId = $storage->getSiteId();
	if($siteId)
	{
		return array($siteId => '');
	}

	if(!Loader::includeModule('socialnetwork'))
	{
		return array(
			self::getDefaultSiteId()?: SITE_ID => ''
		);
	}

	if($storage->getProxyType() instanceof ProxyTypeUser)
	{
		$user = BitrixMainUserTable::getList(
			array(
				'select' => array('ID', 'UF_DEPARTMENT'),
				'filter' => array('ID' => $storage->getEntityId())
			)
		)->fetch();

		//user is intranet user
		if(
			!empty($user["UF_DEPARTMENT"])
			&& is_array($user["UF_DEPARTMENT"])
			&& intval($user["UF_DEPARTMENT"][0]) > 0
		)
		{
			$site = CSocNetLogComponent::getSiteByDepartmentId($user["UF_DEPARTMENT"]);

			return $site["LID"];
		}

		if(Loader::includeModule('extranet'))
		{
			return array(
				self::getExtranetSiteId() => '',
			);
		}

		return array(
			self::getDefaultSiteId()?: SITE_ID => ''
		);
	}
	elseif($storage->getProxyType() instanceof ProxyTypeGroup)
	{
		$query = CSocNetGroup::getSite($storage->getEntityId());
		$sites = array();
		while($groupSite = $query->fetch())
		{
			$sites[$groupSite['LID']] = '';
		}

		return $sites;
	}

	return array(
		self::getDefaultSiteId()?: SITE_ID => ''
	);
}