//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()));
/** * 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; }