• Модуль: seo
  • Путь к файлу: ~/bitrix/modules/seo/lib/adv/yandexstat.php
  • Класс: BitrixSeoAdvYandexStatTable
  • Вызов: YandexStatTable::processStatsResult
static function processStatsResult($campaignId, array $result, YandexDirect $directEngine)
{
	if($result['Stat'])
	{
		$bannerIds = array();
		foreach($result['Stat'] as $statEntry)
		{
			$bannerIds[] = $statEntry['BannerID'];
		}

		if(count($bannerIds) > 0)
		{
			$dbRes = YandexBannerTable::getList(array(
				'filter' => array(
					'=XML_ID' => array_values(array_unique($bannerIds)),
					'=ENGINE_ID' => $directEngine->getId()
				),
				'select' => array(
					'ID', 'XML_ID'
				)
			));
			$bannerList = array();
			while($bannerData = $dbRes->fetch())
			{
				$bannerList[$bannerData['XML_ID']] = $bannerData['ID'];
			}

			if(count($bannerList) > 0)
			{
				foreach($result['Stat'] as $statEntry)
				{
					if(array_key_exists($statEntry['BannerID'], $bannerList))
					{
						$statFields = array(
							'CAMPAIGN_ID' => $campaignId,
							'BANNER_ID' => $bannerList[$statEntry['BannerID']],
							'DATE_DAY' => new Date($statEntry['StatDate'], 'Y-m-d'),
							'CURRENCY' => $result['Currency'],
							'SUM' => $statEntry['Sum'],
							'SUM_SEARCH' => $statEntry['SumSearch'],
							'SUM_CONTEXT' => $statEntry['SumContext'],
							'CLICKS' => $statEntry['Clicks'],
							'CLICKS_SEARCH' => $statEntry['ClicksSearch'],
							'CLICKS_CONTEXT' => $statEntry['ClicksContext'],
							'SHOWS' => $statEntry['Shows'],
							'SHOWS_SEARCH' => $statEntry['ShowsSearch'],
							'SHOWS_CONTEXT' => $statEntry['ShowsContext'],
						);

						$statCheckRes = static::getList(array(
							'filter' => array(
								'BANNER_ID' => $statFields['BANNER_ID'],
								'DATE_DAY' => $statFields['DATE_DAY'],
							),
							'select' => array('ID')
						));

						$statCheck = $statCheckRes->fetch();
						if(!$statCheck)
						{
							static::add($statFields);
						}
					}
				}
			}
		}
	}
}