• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/tracking/analytics/ad.php
  • Класс: Bitrix\Crm\Tracking\Analytics\Ad
  • Вызов: Ad::updateAccountIdCompatible
static function updateAccountIdCompatible()
{
	$list = Main\Config\Option::get('crm', 'tracking_ad_acc', '');
	if ($list)
	{
		 try
		 {
			 $list = Main\Web\Json::decode($list);
			 $list = is_array($list) ? $list : [];
		 }
		 catch (\Exception $exception)
		 {
			 $list = [];
		 }
	}
	else
	{
		$list = [];
	}

	if (count($list) === 0)
	{
		return '';
	}


	if (!Main\Loader::includeModule('seo'))
	{
		return '';
	}

	$providers = \Bitrix\Seo\Analytics\Service::getProviders();
	foreach ($list as $code => $accountId)
	{
		$seoCode = self::getSeoCodeByCode($code);
		if (!$accountId || !$seoCode || !isset($providers[$seoCode]))
		{
			continue;
		}

		$provider = $providers[$seoCode];
		if (!$provider || !$provider['HAS_AUTH'] || !$provider['PROFILE'])
		{
			continue;
		}

		$clientId = $provider['PROFILE']['CLIENT_ID'];
		if (!$clientId)
		{
			continue;
		}

		$row = Tracking\Internals\SourceTable::getRow([
			'select' => ['ID'],
			'filter' => ['=CODE' => $code],
			'limit' => 1,
			'order' => ['ID' => 'ASC']
		]);

		Tracking\Internals\SourceTable::update($row['ID'], [
			'AD_ACCOUNT_ID' => $accountId,
			'AD_CLIENT_ID' => $clientId,
		]);
	}

	Main\Config\Option::delete('crm', ['name' => 'tracking_ad_acc']);

	return '';
}