• Модуль: seo
  • Путь к файлу: ~/bitrix/modules/seo/lib/marketing/adsaudience.php
  • Класс: Bitrix\Seo\Marketing\AdsAudience
  • Вызов: AdsAudience::getServiceProviders
static function getServiceProviders(array $types = null)
{
	$typeList = static::getServiceTypes();

	$providers = array();
	foreach ($typeList as $type)
	{
		if ($types && !in_array($type, $types))
		{
			continue;
		}

		$service = static::getService();
		$authAdapter = $service->getAuthAdapter($type);
		$account = $service->getAccount($type);
		$canUserMultiClients = $authAdapter->canUseMultipleClients();

		$providers[$type] = array(
			'TYPE' => $type,
			'HAS_AUTH' => $authAdapter->hasAuth(),
			'AUTH_URL' => $authAdapter->getAuthUrl(),
			'PROFILE' => $authAdapter->getToken() ? $account->getProfileCached() : false,
		);
		if ($canUserMultiClients)
		{
			$providers[$type]['CLIENTS'] = static::getClientsProfiles($authAdapter);
			if (empty($providers[$type]['CLIENTS']))
			{
				$providers[$type]['HAS_AUTH'] = false;
			}
		}

		// check if no profile, then may be auth was removed in service
		if ($providers[$type]['HAS_AUTH'] && empty($providers[$type]['PROFILE']))
		{
			static::removeAuth($type);
			if (!$canUserMultiClients)
			{
				$providers[$type]['HAS_AUTH'] = false;
			}
		}
	}

	return $providers;
}