Beispiel #1
0
$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');
        }
    }
}
Beispiel #2
0
<?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';