- Модуль: 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;
}
}