• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/componenthelper.php
  • Класс: BitrixSocialnetworkComponentHelper
  • Вызов: ComponentHelper::getExtranetUserIdList
static function getExtranetUserIdList()
{
	static $result = false;
	global $CACHE_MANAGER;

	if ($result === false)
	{
		$result = array();

		if (!ModuleManager::isModuleInstalled('extranet'))
		{
			return $result;
		}

		$ttl = (defined("BX_COMP_MANAGED_CACHE") ? 2592000 : 600);
		$cacheId = 'sonet_ex_userid';
		$cache = new CPHPCache;
		$cacheDir = '/bitrix/sonet/user_ex';

		if($cache->initCache($ttl, $cacheId, $cacheDir))
		{
			$tmpVal = $cache->getVars();
			$result = $tmpVal['EX_USER_ID'];
			unset($tmpVal);
		}
		else
		{
			if (defined("BX_COMP_MANAGED_CACHE"))
			{
				$CACHE_MANAGER->startTagCache($cacheDir);
			}

			$filter = array(
				'UF_DEPARTMENT_SINGLE' => false
			);

			$externalAuthIdList = self::checkPredefinedAuthIdList(array('bot', 'email', 'controller', 'sale', 'imconnector'));
			if (!empty($externalAuthIdList))
			{
				$filter['!=EXTERNAL_AUTH_ID'] = $externalAuthIdList;
			}

			$res = BitrixMainUserTable::getList(array(
				'order' => [],
				'filter' => $filter,
				'select' => array('ID')
			));

			while($user = $res->fetch())
			{
				$result[] = $user["ID"];
			}

			$adminList = [];
			$res = BitrixMainUserGroupTable::getList(array(
				'order' => [],
				'filter' => [
					'=GROUP_ID' => 1
				],
				'select' => [ 'USER_ID' ]
			));
			while($relationFields = $res->fetch())
			{
				$adminList[] = $relationFields["USER_ID"];
			}
			$result = array_diff($result, $adminList);

			if (defined("BX_COMP_MANAGED_CACHE"))
			{
				$CACHE_MANAGER->registerTag('sonet_user2group');
				$CACHE_MANAGER->registerTag('sonet_extranet_user_list');
				$CACHE_MANAGER->endTagCache();
			}

			if($cache->startDataCache())
			{
				$cache->endDataCache(array(
					'EX_USER_ID' => $result
				));
			}
		}
	}

	return $result;
}