• Модуль: seo
  • Путь к файлу: ~/bitrix/modules/seo/lib/advsession.php
  • Класс: BitrixSeoAdvSession
  • Вызов: AdvSession::checkSessionOrder
static function checkSessionOrder($orderId)
{
	if(
		isset($_SESSION['SEO_ADV'])
		&& is_array($_SESSION['SEO_ADV'])
		&& $_SESSION['SEO_ADV']['BANNER_ID'] > 0
		&& !in_array($orderId, static::$orderHandlerCalled)
		&& MainLoader::includeModule('sale')
		&& MainLoader::includeModule('catalog')
	)
	{
		static::$orderHandlerCalled[] = $orderId;

		$banner = null;
		switch($_SESSION['SEO_ADV']['ENGINE'])
		{
			case YandexDirect::ENGINE_ID:
				$dbRes = YandexBannerTable::getList(array(
					'filter' => array(
						'=XML_ID' => $_SESSION['SEO_ADV']['BANNER_ID'],
						'=ENGINE.CODE' => YandexDirect::ENGINE_ID,
					),
					'select' => array(
						'ID', 'CAMPAIGN_ID', 'ENGINE_ID',
					)
				));
				$banner = $dbRes->fetch();
				break;
		}

		if($banner)
		{
			$linkedProductsList = static::getBannerLinkedProducts($banner['ID']);

			if(count($linkedProductsList) > 0)
			{
				$basket = BasketTable::getList(array(
					'filter' => array(
						'=ORDER_ID' => $orderId,
					),
					'select' => array('PRODUCT_ID'),
				));

				$addEntry = false;
				while($item = $basket->fetch())
				{
					if(in_array($item['PRODUCT_ID'], $linkedProductsList))
					{
						$addEntry = true;
						break;
					}
					else
					{
						$productInfo = CCatalogSKU::GetProductInfo($item['PRODUCT_ID']);

						if(is_array($productInfo) && in_array($productInfo['ID'], $linkedProductsList))
						{
							$addEntry = true;
							break;
						}
					}
				}

				if($addEntry)
				{
					$entryData = array(
						'ENGINE_ID' => $banner['ENGINE_ID'],
						'CAMPAIGN_ID' => $banner['CAMPAIGN_ID'],
						'BANNER_ID' => $banner['ID'],
						'ORDER_ID' => $orderId,
						'SUM' => 0,
						'PROCESSED' => OrderTable::NOT_PROCESSED,
					);

					OrderTable::add($entryData);
				}
			}
		}
	}
}