• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/integration/ui/entityselector/userprovider.php
  • Класс: BitrixSocialnetworkIntegrationUIEntitySelectorUserProvider
  • Вызов: UserProvider::getExtranetUsersQuery
static function getExtranetUsersQuery(int $currentUserId): ?Query
{
	$extranetSiteId = Option::get('extranet', 'extranet_site');
	$extranetSiteId = ($extranetSiteId && ModuleManager::isModuleInstalled('extranet') ? $extranetSiteId : false);

	if (
		!$extranetSiteId
		|| CSocNetUser::isCurrentUserModuleAdmin()
	)
	{
		return null;
	}

	$query = UserToGroupTable::query();
	$query->addSelect(new ExpressionField('DISTINCT_USER_ID', 'DISTINCT %s', 'USER.ID'));
	// $query->where('ROLE', '<=', UserToGroupTable::ROLE_USER);
	$query->whereIn('ROLE', self::EXTRANET_ROLES);
	$query->registerRuntimeField(
		new Reference(
			'GS',
			WorkgroupSiteTable::class,
			Join::on('ref.GROUP_ID', 'this.GROUP_ID')->where('ref.SITE_ID', $extranetSiteId),
			['join_type' => 'INNER']
		)
	);

	$query->registerRuntimeField(
		new Reference(
			'UG_MY',
			UserToGroupTable::class,
			Join::on('ref.GROUP_ID', 'this.GROUP_ID')
				->where('ref.USER_ID', $currentUserId)
				->whereIn('ref.ROLE', self::EXTRANET_ROLES),
			['join_type' => 'INNER']
		)
	);

	return $query;
}