function Authorize($ID, $CONFIRM_CODE = false) { global $USER; $subscr = CSubscription::GetByID($ID); if ($subscr_arr = $subscr->Fetch()) { //unconditional auth if ($CONFIRM_CODE === false) { $_SESSION["SESS_SUBSCR_AUTH"][$ID] = "YES"; return true; } //anonymous subscription if ($subscr_arr["CONFIRM_CODE"] == $CONFIRM_CODE) { $_SESSION["SESS_SUBSCR_AUTH"][$ID] = "YES"; return true; } //user account subscription if (intval($subscr_arr["USER_ID"]) > 0) { if ($USER->IsAuthorized()) { //user is already authorized if ($USER->GetID() == $subscr_arr["USER_ID"]) { $_SESSION["SESS_SUBSCR_AUTH"][$ID] = "YES"; return true; } } } } $_SESSION["SESS_SUBSCR_AUTH"][$ID] = "NO"; return false; }
} else { LocalRedirect("/bitrix/admin/subscr_admin.php?lang=" . LANG); } } else { if ($e = $APPLICATION->GetException()) { $message = new CAdminMessage(GetMessage("subs_save_error"), $e); } $bVarsFromForm = true; } } ClearVars(); $str_FORMAT = "text"; $str_ACTIVE = "Y"; $str_USER_ID = 0; if ($ID > 0) { $subscr = CSubscription::GetByID($ID); if (!$subscr->ExtractFields("str_")) { $ID = 0; } } if ($bVarsFromForm) { $DB->InitTableVarsForEdit("b_subscription", "", "str_"); } $APPLICATION->SetTitle($ID > 0 ? GetMessage("subscr_title_edit") . $ID : GetMessage("subscr_title_add")); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; $aMenu = array(array("TEXT" => GetMessage("subscr_list_text"), "TITLE" => GetMessage("subscr_list"), "LINK" => "subscr_admin.php?lang=" . LANG, "ICON" => "btn_list")); if ($ID > 0) { $aMenu[] = array("SEPARATOR" => "Y"); $aMenu[] = array("TEXT" => GetMessage("subscr_add_text"), "TITLE" => GetMessage("subscr_mnu_add"), "LINK" => "subscr_edit.php?lang=" . LANG, "ICON" => "btn_new"); $aMenu[] = array("TEXT" => GetMessage("subscr_del_text"), "TITLE" => GetMessage("subscr_mnu_del"), "LINK" => "javascript:if(confirm('" . GetMessage("subscr_mnu_del_conf") . "'))window.location='subscr_admin.php?ID=" . $ID . "&action=delete&lang=" . LANG . "&" . bitrix_sessid_get() . "';", "ICON" => "btn_delete"); }
//remember e-mail in cookies $bVarsFromForm = false; $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)) {
$oSubscription = new CSubscription(); $oSubscription->Update($SUBSCR_ID, array("ACTIVE" => "N")); break; } } } $lAdmin->AddHeaders(array(array("id" => "EMAIL", "content" => GetMessage("POST_EMAIL"), "default" => true), array("id" => "SUBSCRIPTION_ID", "content" => GetMessage("POST_SUBSCRIPTION_ID"), "default" => true, "align" => "right"), array("id" => "USER_ID", "content" => GetMessage("POST_USER_ID"), "default" => true, "align" => "right"))); $cData = new CPosting(); $rsData = $cData->GetEmailsByStatus($ID, $find_status_id); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint("")); while ($arRes = $rsData->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_EMAIL, $arRes); if ($f_SUBSCRIPTION_ID > 0) { $rs = CSubscription::GetByID($f_SUBSCRIPTION_ID); $ar = $rs->Fetch(); if (!$ar) { $row->AddViewField("SUBSCRIPTION_ID", $f_SUBSCRIPTION_ID . ' (' . GetMessage("POST_SUBSCR_DELETED") . ')'); } elseif ($ar["ACTIVE"] == "N") { $row->AddViewField("SUBSCRIPTION_ID", '<a target="_blank" href="subscr_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $f_SUBSCRIPTION_ID . '">' . $f_SUBSCRIPTION_ID . '</a> (' . GetMessage("POST_SUBSCR_INACTIVE") . ')'); } else { $row->AddViewField("SUBSCRIPTION_ID", '<a target="_blank" href="subscr_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $f_SUBSCRIPTION_ID . '">' . $f_SUBSCRIPTION_ID . '</a>'); } } if ($f_USER_ID > 0) { $row->AddViewField("USER_ID", '<a target="_blank" href="user_edit.php?lang=' . LANGUAGE_ID . '&ID=' . $f_USER_ID . '">' . $f_USER_ID . '</a>'); } } $lAdmin->AddFooter(array(array("title" => GetMessage("post_total"), "value" => $rsData->SelectedRowsCount()), array("counter" => true, "title" => GetMessage("MAIN_ADMIN_LIST_CHECKED"), "value" => "0"))); $lAdmin->AddGroupActionTable(array("inactive" => GetMessage("POST_GROUP_ACTION_INACTIVE"), "sudelete" => GetMessage("POST_GROUP_ACTION_DELETE")));