• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/subscribe.php
  • Класс: BitrixCatalogSubscribeTable
  • Вызов: SubscribeTable::onSaleOrderSaved
static function onSaleOrderSaved(Event $event)
{
	if(!$event->getParameter('IS_NEW'))
		return;

	$order = $event->getParameter('ENTITY');

	if($order instanceof SaleOrder)
	{
		$userId = $order->getUserId();
		$siteId = $order->getSiteId();
		$basketObject = $order->getBasket();
		$listProductId = array();
		/** @var BitrixSaleBasketItem $item */
		foreach ($basketObject->getBasketItems() as $item)
			$listProductId[] = $item->getProductId();

		if(!$userId || empty($listProductId))
			return;

		$user = CUser::getList('ID', 'ASC',
			array('ID' => $userId) , array('FIELDS' => array('EMAIL'))
		)->fetch();
		if($user['EMAIL'])
		{
			$listSubscribe = static::getList(array(
				'select' => array('ID'),
				'filter' => array(
					'=USER_CONTACT' => $user['EMAIL'],
					'=SITE_ID' => $siteId,
					'ITEM_ID' => $listProductId,
				),
			))->fetchAll();
			$listSubscribeId = array();
			foreach($listSubscribe as $subscribe)
				$listSubscribeId[] = $subscribe['ID'];

			static::unSubscribe($listSubscribeId);
		}
	}
}