• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/subscribemanager.php
  • Класс: BitrixCatalogProductSubscribeManager
  • Вызов: SubscribeManager::addSubscribe
public function addSubscribe(array $subscribeData)
{
	$this->checkRequiredInputParams($subscribeData,
		array('USER_CONTACT', 'ITEM_ID', 'SITE_ID', 'CONTACT_TYPE'));
	if(!$this->errorCollection->isEmpty())
	{
		return false;
	}

	$resultObject = ProductTable::getList(array(
		'select' => array(
			'SUBSCRIBE',
			'USER_CONTACT' => 'BitrixCatalogSubscribeTable:PRODUCT.USER_CONTACT',
			'CONTACT_TYPE' => 'BitrixCatalogSubscribeTable:PRODUCT.CONTACT_TYPE',
			'DATE_TO' => 'BitrixCatalogSubscribeTable:PRODUCT.DATE_TO',
		),
		'filter' => array(
			'=ID' => $subscribeData['ITEM_ID'],
		),
	));
	while($productSubscribeData = $resultObject->fetch())
	{
		if(!$this->checkDataBeforeSave($productSubscribeData, $subscribeData))
			break;
	}
	if(!$this->errorCollection->isEmpty())
	{
		return false;
	}

	$this->fields = array();
	foreach($subscribeData as $fieldId => $fieldValue)
	{
		if(in_array($fieldId, $this->listAvailableFields))
		{
			$this->fields[$fieldId] = $fieldValue;
		}
	}

	$this->validateFields();
	if(!$this->errorCollection->isEmpty())
	{
		return false;
	}

	$result = SubscribeTable::add($this->fields);
	if($result->isSuccess())
	{
		$this->setSessionOfSibscribedProducts($subscribeData['ITEM_ID']);
		return $result->getId();
	}
	else
	{
		foreach($result->getErrorMessages() as $errorMessage)
			$this->errorCollection->add(array(new Error($errorMessage, self::ERROR_ADD_SUBSCRIBE)));
		return false;
	}
}