public function DeleteByLogin($login) { if (!$login) { throw new \Exception("Unexpected login", 1); } else { $user = \CUser::GetByLogin($login)->Fetch(); $subscriber = \CSubscription::GetByEmail($user["EMAIL"])->Fetch(); \CSubscription::Delete($subscriber["ID"]); return True; } }
function GetUserSubscription() { global $USER; $email_cookie = COption::GetOptionString("main", "cookie_name", "BITRIX_SM") . "_SUBSCR_EMAIL"; $subscr_EMAIL = strlen($_COOKIE[$email_cookie]) > 0 ? $_COOKIE[$email_cookie] : $USER->GetParam("EMAIL"); if ($subscr_EMAIL != "") { $subscr = CSubscription::GetByEmail($subscr_EMAIL, intval($USER->GetID())); if ($subscr_arr = $subscr->Fetch()) { return $subscr_arr; } } return array("ID" => 0, "EMAIL" => ""); }
$APPLICATION->set_cookie("SUBSCR_EMAIL", $_REQUEST["EMAIL"], mktime(0, 0, 0, 12, 31, 2030)); LocalRedirect($APPLICATION->GetCurPage() . "?ID=" . $ID . ($iMsg != "" ? "&mess_code=" . urlencode($iMsg) : "")); } else { $arWarning[] = $obSubscription->LAST_ERROR; } } //$arWarning } //POST //new or existing subscription? //ID==0 indicates new subscription if (strlen($_REQUEST["sf_EMAIL"]) > 0 || $ID > 0 || $USER->IsAuthorized()) { if ($ID > 0) { $rsSubscription = CSubscription::GetByID($ID); } elseif (strlen($_REQUEST["sf_EMAIL"]) > 0) { $rsSubscription = CSubscription::GetByEmail($_REQUEST["sf_EMAIL"], intval($USER->GetID())); } else { $rsSubscription = CSubscription::GetList(array(), array("USER_ID" => $USER->GetID())); } if ($arSubscription = $rsSubscription->GetNext()) { $ID = intval($arSubscription["ID"]); } else { $ID = 0; } } else { $ID = 0; } //try to authorize subscription by CONFIRM_CODE or user password AUTH_PASS if ($ID > 0 && !CSubscription::IsAuthorized($ID)) { if ($arSubscription["USER_ID"] > 0 && !empty($_REQUEST["AUTH_PASS"])) { //trying to login user
$rubSelect = array("SORT" => "ASC", "NAME" => "ASC"); $rubFilter = array("ACTIVE" => "Y", "VISIBLE" => "Y", 'NAME' => 'Акции'); $dbRub = CRubric::GetList($rubSelect, $rubFilter); while ($arRubric = $dbRub->GetNext()) { echo $rbkIDs[] = $arRubric["ID"]; } $RUB_ID = $rbkIDs; } $email = $_REQUEST["EMAIL"]; $ID = $USER->IsAuthorized() ? $USER->GetID() : false; //echo "DATACHECK ID=$ID, EMAIL=$email<br/>"; if ($ID || !empty($email)) { //echo "DATA_VALID<br/>"; if (empty($email)) { $email = $USER->GetEmail(); } $subscr = new CSubscription(); //echo "SEARCH SUBSCRIPTION<br/>"; $arSFields = array("USER_ID" => $ID, "FORMAT" => "html", "ACTIVE" => "Y", "EMAIL" => $email, "SEND_CONFIRM" => "N", "CONFIRMED" => "Y", "DATE_CONFIRM" => ConvertTimeStamp(time(), "SHORT", "ru"), "RUB_ID" => $RUB_ID, "SEND_CONFIRM" => "N"); $dbSubscr = CSubscription::GetByEmail($email); if ($arSubscr = $dbSubscr->GetNext()) { // echo "FOUND.UPDATE<br/>"; $result = $subscr->Update($arSubscr["ID"], $arSFields, "#SITE_ID#"); } else { // echo "NOT FOUND.ADD<br/>"; $result = $subscr->Add($arSFields, "#SITE_ID#"); // echo $subscr->LAST_ERROR; } } } // LocalRedirect($backUrl);
} else { /* определим рубрики активные рубрики подписок */ $RUB_ID = array(); $rub = CRubric::GetList(array(), array("ACTIVE" => "Y")); while ($rub->ExtractFields("r_")) { $RUB_ID = array($r_ID); } $RUB_ID = array('0' => '2'); /* создадим массив на подписку */ $subscr = new CSubscription(); $arFields = array("USER_ID" => $USER, "FORMAT" => "html/text", "EMAIL" => $EMAIL, "ACTIVE" => "Y", "RUB_ID" => $RUB_ID, "SEND_CONFIRM" => "Y", "CONFIRMED" => "Y"); if ($idsubrscr = $subscr->Add($arFields)) { $result = json_encode(array("result" => true, "value" => "Спасибо, вы подписались на рассылку", "action" => "subscribe")); } else { $result = json_encode(array("result" => false, "value" => "Данный адрес уже был подписан на рассылку", "action" => "subscribe")); } } } elseif ($_POST["email"] && $_POST["action"] == "remove") { $subscription = CSubscription::GetByEmail($_POST["email"]); if ($subscription->ExtractFields("str_")) { $ID = (int) $str_ID; } $subscr = new CSubscription(); if ($subscr->Update($ID, array("ACTIVE" => "N"))) { $result = json_encode(array("result" => true, "value" => "Вы отписались на рассылки", "action" => "unsubscribe")); } else { $result = json_encode(array("result" => false, "value" => "Произошла ошибка. ПОпробуйте позже", "action" => "unsubscribe")); } } echo $result; }
/** * Get subscription id by user's email * * @param string $email * @return array|boolean */ public static function getSubscriptionByEmail($email) { if (!CModule::IncludeModule("subscribe")) { return false; } $rsSubscription = CSubscription::GetByEmail($email); $arSubscription = $rsSubscription->Fetch(); return $arSubscription["ID"] ? $arSubscription : false; }
$strWarning .= $subscr->LAST_ERROR; } } //$strWarning } //POST //default values $str_FORMAT = "text"; $str_EMAIL = htmlspecialchars($_REQUEST["sf_EMAIL"]); //new or existing subscription? //ID==0 indicates new subscription if (strlen($_REQUEST["sf_EMAIL"]) > 0 || $ID > 0) { if ($ID > 0) { $subscription = CSubscription::GetByID($ID); } else { $subscription = CSubscription::GetByEmail($_REQUEST["sf_EMAIL"]); } if ($subscr_arr = $subscription->Fetch()) { foreach ($subscr_arr as $key => $value) { ${"str_" . $key} = htmlspecialchars($value); } $ID = (int) $str_ID; } else { $ID = 0; } } else { $ID = 0; } //try to authorize subscription by CONFIRM_CODE or user password AUTH_PASS if ($ID > 0 && !CSubscription::IsAuthorized($ID)) { if ($str_USER_ID > 0 && !empty($_REQUEST["AUTH_PASS"])) {