예제 #1
0
    //get current user subscription from cookies
    if (empty($subscr_EMAIL)) {
        $subscr_EMAIL = $APPLICATION->get_cookie('SENDER_SUBSCR_EMAIL');
    }
    $subscr_EMAIL = strtolower(strlen($subscr_EMAIL) > 0 ? $subscr_EMAIL : $USER->GetParam("EMAIL"));
    if (isset($_SESSION['SENDER_SUBSCRIBE_LIST']) && is_array($_SESSION['SENDER_SUBSCRIBE_LIST'])) {
        $arSubscription = $_SESSION['SENDER_SUBSCRIBE_LIST']['SUBSCRIPTION'];
        $arSubscriptionRubrics = $_SESSION['SENDER_SUBSCRIBE_LIST']['RUBRIC'];
    } else {
        if (!CModule::IncludeModule("sender")) {
            $obCache->AbortDataCache();
            ShowError(GetMessage("SENDER_SUBSCR_MODULE_NOT_INSTALLED"));
            return;
        }
        if ($subscr_EMAIL != "") {
            $subscriptionDb = \Bitrix\Sender\MailingSubscriptionTable::getSubscriptionList(array('select' => array('ID' => 'CONTACT_ID', 'EMAIL' => 'CONTACT.EMAIL', 'EXISTED_MAILING_ID' => 'MAILING.ID'), 'filter' => array('=CONTACT.EMAIL' => $subscr_EMAIL, '!MAILING.ID' => null)));
            while ($subscription = $subscriptionDb->fetch()) {
                $arSubscription = $subscription;
                //get user's newsletter categories
                if (intval($subscription['EXISTED_MAILING_ID']) > 0) {
                    $arSubscriptionRubrics[] = $subscription['EXISTED_MAILING_ID'];
                }
            }
        }
        $_SESSION['SENDER_SUBSCRIBE_LIST']['SUBSCRIPTION'] = $arSubscription;
        $_SESSION['SENDER_SUBSCRIBE_LIST']['RUBRIC'] = $arSubscriptionRubrics;
    }
}
//page title
if ($arParams["SET_TITLE"] == "Y") {
    $APPLICATION->SetTitle(GetMessage("SENDER_SUBSCR_TITLE"), array('COMPONENT_NAME' => $this->GetName()));
예제 #2
0
 /**
  * Return list of subscriptions on mailings for subscriber
  *
  * @param $data
  * @return array
  * @throws \Bitrix\Main\ArgumentException
  */
 public static function getList($data)
 {
     $resultMailingList = array();
     $mailing = MailingTable::getRowById(array('ID' => $data['MAILING_ID']));
     if (isset($data['TEST']) && $data['TEST'] == 'Y') {
         $resultMailingList[] = array('ID' => $mailing['ID'], 'NAME' => $mailing['NAME'], 'DESC' => $mailing['DESCRIPTION'], 'SELECTED' => true);
         return $resultMailingList;
     }
     $mailingUnsub = array();
     $unSubDb = MailingSubscriptionTable::getUnSubscriptionList(array('select' => array('MAILING_ID'), 'filter' => array('=CONTACT.EMAIL' => trim(strtolower($data['EMAIL'])), '=MAILING.SITE_ID' => $mailing['SITE_ID'])));
     while ($unSub = $unSubDb->fetch()) {
         $mailingUnsub[] = $unSub['MAILING_ID'];
     }
     $mailingList = array();
     // all receives mailings
     $mailingDb = PostingRecipientTable::getList(array('select' => array('MAILING_ID' => 'POSTING.MAILING.ID'), 'filter' => array('=EMAIL' => trim(strtolower($data['EMAIL'])), '=POSTING.MAILING.ACTIVE' => 'Y', '=POSTING.MAILING.SITE_ID' => $mailing['SITE_ID']), 'group' => array('MAILING_ID')));
     while ($mailing = $mailingDb->fetch()) {
         $mailingList[] = $mailing['MAILING_ID'];
     }
     // all subscribed mailings
     $mailingDb = MailingSubscriptionTable::getSubscriptionList(array('select' => array('MAILING_ID'), 'filter' => array('=CONTACT.EMAIL' => trim(strtolower($data['EMAIL'])), '=MAILING.ACTIVE' => 'Y', '=MAILING.SITE_ID' => $mailing['SITE_ID'])));
     while ($mailing = $mailingDb->fetch()) {
         $mailingList[] = $mailing['MAILING_ID'];
     }
     $mailingList = array_unique($mailingList);
     foreach ($mailingList as $mailingId) {
         if (!in_array($mailingId, $mailingUnsub)) {
             $mailingDesc = MailingTable::getRowById($mailingId);
             if ($mailingDesc) {
                 $resultMailingList[] = array('ID' => $mailingDesc['ID'], 'NAME' => $mailingDesc['NAME'], 'DESC' => $mailingDesc['DESCRIPTION'], 'SELECTED' => in_array($mailingDesc['ID'], array($data['MAILING_ID'])));
             }
         }
     }
     return $resultMailingList;
 }