$messageDictionary = array('message_success' => array('TYPE' => 'NOTE', 'TEXT' => GetMessage("SENDER_SUBSCR_NOTE_SUCCESS")), 'message_confirm' => array('TYPE' => 'NOTE', 'TEXT' => GetMessage("SENDER_SUBSCR_NOTE_CONFIRM")), 'message_err_sec' => array('TYPE' => 'ERROR', 'TEXT' => GetMessage("SENDER_SUBSCR_ERR_SECURITY")), 'message_err_email' => array('TYPE' => 'ERROR', 'TEXT' => GetMessage("SENDER_SUBSCR_ERR_EMAIL"))); $cookieLifeTime = time() + 60 * 60 * 24 * 30 * 12 * 10; // 30 days * 12 months * 10 ~ 10 years if ($_SERVER['REQUEST_METHOD'] == 'GET') { if (isset($_GET['sender_subscription']) && isset($messageDictionary[$_GET['sender_subscription']])) { $arResult['MESSAGE'] = $messageDictionary[$_GET['sender_subscription']]; $arResult['MESSAGE']['CODE'] = $_GET['sender_subscription']; } if (isset($_GET['tag']) && isset($_GET['sender_subscription']) && $_GET['sender_subscription'] == 'confirm') { if (!CModule::IncludeModule("sender")) { $obCache->AbortDataCache(); ShowError(GetMessage("SENDER_SUBSCR_MODULE_NOT_INSTALLED")); return; } try { $arTag = \Bitrix\Main\Mail\Tracking::parseSignedTag($_REQUEST['tag']); if ($arTag['MODULE_ID'] == 'sender' && check_email($arTag['FIELDS']['EMAIL']) && is_array($arTag['FIELDS']['MAILING_LIST']) && isset($arTag['FIELDS']['SITE_ID'])) { \Bitrix\Sender\Subscription::add($arTag['FIELDS']['EMAIL'], $arTag['FIELDS']['MAILING_LIST'], $arTag['FIELDS']['SITE_ID']); $APPLICATION->set_cookie("SENDER_SUBSCR_EMAIL", $arTag['FIELDS']['EMAIL'], $cookieLifeTime); $subscr_EMAIL = $arTag['FIELDS']['EMAIL']; unset($_SESSION['SENDER_SUBSCRIBE_LIST']); $arResult['MESSAGE'] = array('TYPE' => 'NOTE', 'CODE' => 'message_success'); if ($arParams['AJAX_MODE'] != 'Y') { LocalRedirect($APPLICATION->GetCurPageParam('sender_subscription=message_success', array('sender_subscription'))); } } } catch (\Bitrix\Main\Security\Sign\BadSignatureException $exception) { $arResult['MESSAGE'] = array('TYPE' => 'ERROR', 'CODE' => 'message_err_sec'); } } }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } /* @var \CMain $APPLICATION*/ $APPLICATION->SetTitle(GetMessage('MAIN_MAIL_UNSUBSCRIBE_TITLE')); $messageDictionary = array('1000' => GetMessage('MAIN_MAIL_UNSUBSCRIBE_ERROR_UNSUB'), '1001' => GetMessage('MAIN_MAIL_UNSUBSCRIBE_ERROR_NOT_SELECTED')); try { $arTag = \Bitrix\Main\Mail\Tracking::parseSignedTag(is_string($_REQUEST['tag']) ? $_REQUEST['tag'] : ''); $arTag['IP'] = $_SERVER['REMOTE_ADDR']; $arResult = array(); $arResult['FORM_URL'] = $APPLICATION->getCurPageParam("", array('success')); $arResult['LIST'] = \Bitrix\Main\Mail\Tracking::getSubscriptionList($arTag); if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('MAIN_MAIL_UNSUB_BUTTON', $_POST) && check_bitrix_sessid()) { $unsubscribeListFromForm = is_array($_POST['MAIN_MAIL_UNSUB']) ? $_POST['MAIN_MAIL_UNSUB'] : array(); $arUnsubscribeList = array(); foreach ($arResult['LIST'] as $key => $unsubItem) { if (in_array($unsubItem['ID'], $unsubscribeListFromForm)) { $arUnsubscribeList[] = $unsubItem['ID']; $arSubList[$key]['SELECTED'] = true; } else { $arResult['LIST'][$key]['SELECTED'] = false; } } $messageResult = null; if (!empty($arUnsubscribeList)) { $arTag['FIELDS']['UNSUBSCRIBE_LIST'] = $arUnsubscribeList; $result = \Bitrix\Main\Mail\Tracking::unsubscribe($arTag); if ($result) { $messageResult = '0';