%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/components/bitrix/catalog.product.subscribe/ |
| Current File : /home/bitrix/www/bitrix/components/bitrix/catalog.product.subscribe/ajax.php |
<?
/** @global CMain $APPLICATION */
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Loader;
define('STOP_STATISTICS', true);
define('PUBLIC_AJAX_MODE', true);
define('NOT_CHECK_PERMISSIONS', true);
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
if(isset($_REQUEST['reloadCaptcha']) && $_REQUEST['reloadCaptcha'] == 'Y')
{
echo $APPLICATION->captchaGetCode();
die();
}
if(!check_bitrix_sessid()) die();
Loc::loadMessages(__FILE__);
global $USER;
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(!Loader::includeModule('catalog'))
{
echo Bitrix\Main\Web\Json::encode(array(
'error' => true, 'message' => Loc::getMessage('CPSA_MODULE_NOT_INSTALLED', array('#NAME#' => 'catalog'))));
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();
}
if($_POST['checkSubscribe'] == 'Y')
{
if(!empty($_SESSION['SUBSCRIBE_PRODUCT']['LIST_PRODUCT_ID']))
{
if(array_key_exists($_POST['itemId'], $_SESSION['SUBSCRIBE_PRODUCT']['LIST_PRODUCT_ID']))
{
echo Bitrix\Main\Web\Json::encode(array('subscribe' => true));
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();
}
}
echo Bitrix\Main\Web\Json::encode(array('subscribe' => false));
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();
}
$subscribeManager = new \Bitrix\Catalog\Product\SubscribeManager;
$contactTypes = $subscribeManager->contactTypes;
if(!$contactTypes)
{
echo Bitrix\Main\Web\Json::encode(
array('error' => true, 'message' => Loc::getMessage('CPSA_CONTACT_TYPE_NOT_FOUND')));
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();
}
$defaultContactTypeId = \Bitrix\Catalog\SubscribeTable::CONTACT_TYPE_EMAIL;
$contactFormData = array(
'contactFormSubmit' => true,
'contactTypeData' => array()
);
foreach($contactTypes as $contactTypeId => $contactTypeData)
{
$contactFormData['contactTypeData'][$contactTypeId]['contactId'] = $contactTypeData['ID'];
$contactFormData['contactTypeData'][$contactTypeId]['contactLable'] = $contactTypeData['NAME'];
$contactFormData['contactTypeData'][$contactTypeId]['contactRule'] = $contactTypeData['RULE'];
}
$userId = false;
if($USER && is_object($USER) && $USER->isAuthorized())
{
$userId = $USER->getId();
}
if($_POST['subscribe'] == 'Y')
{
if(count($contactTypes) > 1)
{
// Returns a response to the formation of the form of contacts.
if(isset($_SESSION['SUBSCRIBE_PRODUCT']['useCaptcha'])
&& $_SESSION['SUBSCRIBE_PRODUCT']['useCaptcha'] == 'Y')
{
$contactFormData['captchaCode'] = $APPLICATION->captchaGetCode();
}
echo Bitrix\Main\Web\Json::encode($contactFormData);
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();
}
else
{
$contactTypeId = key($contactTypes);
$userContact = false;
if($userId)
$userContact = ($contactTypeId == $defaultContactTypeId) ? $USER->getEmail() : false;
if($userContact)
{
$subscribeData = array(
'USER_CONTACT' => $userContact,
'ITEM_ID' => $_POST['itemId'],
'SITE_ID' => $_POST['siteId'],
'CONTACT_TYPE' => $contactTypeId,
'USER_ID' => $userId,
);
$subscribeId = $subscribeManager->addSubscribe($subscribeData);
if($subscribeId)
{
echo Bitrix\Main\Web\Json::encode(
array('success' => true, 'message' => Loc::getMessage('CPSA_SUCCESS_SUBSCRIBE')));
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();
}
else
{
$errorObject = current($subscribeManager->getErrors());
$errors = array('error' => true);
if($errorObject)
{
$errors['message'] = $errorObject->getMessage();
if($errorObject->getCode() == $subscribeManager::ERROR_ADD_SUBSCRIBE_ALREADY_EXISTS)
{
$errors['setButton'] = true;
}
}
echo Bitrix\Main\Web\Json::encode($errors);
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();
}
}
else
{
if(isset($_SESSION['SUBSCRIBE_PRODUCT']['useCaptcha'])
&& $_SESSION['SUBSCRIBE_PRODUCT']['useCaptcha'] == 'Y')
{
$contactFormData['captchaCode'] = $APPLICATION->captchaGetCode();
}
echo Bitrix\Main\Web\Json::encode($contactFormData);
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();
}
}
}
elseif($_POST['contactFormSubmit'] == 'Y')
{
if(empty($_POST['contact']) || !is_array($_POST['contact']))
{
echo Bitrix\Main\Web\Json::encode(
array('error' => true, 'message' => Loc::getMessage('CPSA_INCCORECT_INPUT_DATA')));
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();
}
if (isset($_SESSION['SUBSCRIBE_PRODUCT']['useCaptcha'])
&& $_SESSION['SUBSCRIBE_PRODUCT']['useCaptcha'] == 'Y')
{
if (!$APPLICATION->captchaCheckCode($_POST['captcha_word'], $_POST['captcha_sid']))
{
echo Bitrix\Main\Web\Json::encode(
array('error' => true, 'message' => Loc::getMessage('CPSA_INCCORECT_INPUT_CAPTHA')));
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();
}
}
$manyContact = false;
if(isset($_POST['manyContact']) && $_POST['manyContact'] == 'Y')
{
$manyContact = true;
}
$useMethodNotification = false;
$errors = array();
foreach($_POST['contact'] as $contactTypeId => $contact)
{
if($manyContact && $contact['use'] == 'N')
{
continue;
}
$subscribeData = array(
'USER_CONTACT' => $contact['user'],
'ITEM_ID' => $_POST['itemId'],
'SITE_ID' => $_POST['siteId'],
'CONTACT_TYPE' => $contactTypeId,
);
if($userId)
{
$subscribeData['USER_ID'] = $userId;
}
$subscribeManager->addSubscribe($subscribeData);
$errorObject = current($subscribeManager->getErrors());
if($errorObject)
{
$errors = array(
'typeName' => $contactTypes[$contactTypeId]['NAME'],
'errorMessage' => $errorObject->getMessage()
);
if($errorObject->getCode() == $subscribeManager::ERROR_ADD_SUBSCRIBE_ALREADY_EXISTS)
{
$errors['setButton'] = true;
}
}
$useMethodNotification = true;
}
if($errors || !$useMethodNotification)
{
$jsonData = array('error' => true, 'message' => $useMethodNotification
? $errors['errorMessage'] : Loc::getMessage('CPSA_NOT_CHOOSE_METHOD_NOTIFICATION'),
'typeName' => $errors['typeName']);
if(!empty($errors['setButton']))
$jsonData['setButton'] = true;
echo Bitrix\Main\Web\Json::encode($jsonData);
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();
}
echo Bitrix\Main\Web\Json::encode(
array('success' => true, 'message' => Loc::getMessage('CPSA_SUCCESS_SUBSCRIBE')));
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();
}
}
echo Bitrix\Main\Web\Json::encode(array());
require_once($_SERVER['DOCUMENT_ROOT'].BX_ROOT.'/modules/main/include/epilog_after.php');
die();