/** * [unsubscribeUser description] * @param array $arParams * @return bool */ function unsubscribeUser($arParams){ CModule::IncludeModule("subscribe"); $subscr = CSubscription::GetList( array("ID"=>"ASC"), array("CONFIRMED"=>"Y", "ACTIVE"=>"Y", "ID" => $arParams["ID"]) ); if ($arSubUser = $subscr->Fetch()): if ($arParams["CONFIRM_CODE"] == $arSubUser["CONFIRM_CODE"]): if (CSubscription::Delete($arSubUser["ID"])): return true; endif; endif; endif; return false; }
public function Add() { \ChromePhp::log("Subscr CRUD Add"); if ($subscriber = $this->getSubscriber()) { $this->user = \CUser::GetByID($subscriber)->Fetch(); \CUser::Authorize($this->user["ID"]); if ($subscribe = \CSubscription::GetList(False, array("ACTIVE" => "Y", "USER_ID" => $this->user["ID"]))->Fetch()) { return $subscribe["ID"]; } else { try { return $this->addSubscribe(); } catch (SubscribeException $e) { prentExpection($e->getMessage()); } } } else { throw new SubscribeUserException("No user for add to subscribers" . ". Line: " . __LINE__); } }
ShowError(GetMessage("CC_BSS_NOT_AUTHORIZED")); return; } if ($USER_ID && $_SERVER["REQUEST_METHOD"] == "POST" && array_key_exists("Update", $_POST) && check_bitrix_sessid()) { //Find out what rubrics was chosen by the user $arNewRubrics = array(); if (is_array($_POST["RUB_ID"])) { foreach ($_POST["RUB_ID"] as $rub_id) { $rub_id = intval($rub_id); if ($rub_id > 0) { $arNewRubrics[$rub_id] = $rub_id; } } } //Get his subscription $rsSubscription = $obSubscription->GetList(array(), array("USER_ID" => $USER_ID)); $arSubscription = $rsSubscription->Fetch(); //And when hidden rubrics and rubrics from another site //not displayed we'll save their subscription (if exists) if (is_array($arSubscription)) { $rsRubrics = CSubscription::GetRubricList($arSubscription["ID"]); while ($arRubric = $rsRubrics->Fetch()) { if ($arRubric["LID"] != SITE_ID) { $arNewRubrics[$arRubric["ID"]] = $arRubric["ID"]; } else { if ($arParams["SHOW_HIDDEN"] == "N" && $arRubric["VISIBLE"] == "N") { $arNewRubrics[$arRubric["ID"]] = $arRubric["ID"]; } } } }
if (!$ob->Update($ID, $arFields)) { $lAdmin->AddGroupError(GetMessage("subscr_save_error") . $ob->LAST_ERROR, $ID); } break; case "confirm": $ob = new CSubscription(); $arFields = array("CONFIRMED" => "Y"); if (!$ob->Update($ID, $arFields)) { $lAdmin->AddGroupError(GetMessage("subscr_save_error") . $ob->LAST_ERROR, $ID); } break; } } } $cData = new CSubscription(); $rsData = $cData->GetList(array($by => $order), $arFilter, array("nPageSize" => CAdminResult::GetNavSize($sTableID))); $rsData = new CAdminResult($rsData, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("subscr_nav"))); $lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "id", "align" => "right", "default" => true), array("id" => "DATE_INSERT", "content" => GetMessage("POST_DATE_INSERT"), "sort" => "date_insert", "default" => true), array("id" => "EMAIL", "content" => GetMessage("subscr_addr"), "sort" => "email", "default" => true), array("id" => "USER_ID", "content" => GetMessage("subscr_user"), "sort" => "user", "default" => true), array("id" => "CONFIRMED", "content" => GetMessage("subscr_conf"), "sort" => "conf", "default" => true), array("id" => "ACTIVE", "content" => GetMessage("subscr_act"), "sort" => "act", "default" => true), array("id" => "FORMAT", "content" => GetMessage("subscr_fmt"), "sort" => "fmt", "default" => true), array("id" => "DATE_UPDATE", "content" => GetMessage("subscr_updated"), "sort" => "date_update", "default" => false), array("id" => "DATE_CONFIRM", "content" => GetMessage("subscr_conf_time"), "sort" => "date_confirm", "default" => false), array("id" => "CONFIRM_CODE", "content" => GetMessage("subscr_conf_code"), "sort" => "confirm_code", "default" => false))); while ($arRes = $rsData->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_ID, $arRes); if ($f_USER_ID > 0) { $strUser = "******"/bitrix/admin/user_edit.php?ID=" . $f_USER_ID . "&lang=" . LANG . "\" title=\"" . GetMessage("subscr_user_edit_title") . "\">" . $f_USER_ID . "</a>] (" . $f_USER_LOGIN . ") " . $f_USER_NAME . " " . $f_USER_LAST_NAME; } else { $strUser = GetMessage("subscr_adm_anon"); } $row->AddViewField("USER_ID", $strUser); $row->AddCheckField("ACTIVE"); $row->AddInputField("EMAIL", array("size" => 20)); $row->AddViewField("EMAIL", '<a href="subscr_edit.php?ID=' . $f_ID . '&lang=' . LANG . '" title="' . GetMessage("subscr_upd") . '">' . $f_EMAIL . '</a>');
$arError[] = array("id" => "ADDR_FILE", "text" => GetMessage("subscr_imp_err1") . " (" . GetMessage("subscr_imp_err2") . " " . $_FILES["ADDR_FILE"]["error"] . ")"); } else { $sAddr .= file_get_contents($_FILES["ADDR_FILE"]["tmp_name"]); } } //explode to emails array $aEmail = array(); $addr = strtok($sAddr, ", \r\n\t"); while ($addr !== false) { if (strlen($addr) > 0) { $aEmail[$addr] = true; } $addr = strtok(", \r\n\t"); } //check for duplicate emails $addr = CSubscription::GetList(); while ($addr_arr = $addr->Fetch()) { if (isset($aEmail[$addr_arr["EMAIL"]])) { unset($aEmail[$addr_arr["EMAIL"]]); } } //************************************* //add users and subscribers //************************************* //constant part of the subscriber $subscr = new CSubscription(); $arFields = array("ACTIVE" => "Y", "FORMAT" => $FORMAT != "html" ? "text" : "html", "CONFIRMED" => $CONFIRMED != "Y" ? "N" : "Y", "SEND_CONFIRM" => $SEND_CONFIRM != "Y" ? "N" : "Y", "ALL_SITES" => "Y", "RUB_ID" => $RUB_ID); //constant part of the user if ($USER_TYPE == "U") { $user = new CUser(); }
} 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 $rsUser = CUser::GetByID($arSubscription["USER_ID"]); if ($arUser = $rsUser->Fetch()) {
function GetEmails($post_arr) { $aEmail = array(); //send to categories $aPostRub = array(); $post_rub = CPostingGeneral::GetRubricList($post_arr["ID"]); while ($post_rub_arr = $post_rub->Fetch()) { $aPostRub[] = $post_rub_arr["ID"]; } $subscr = CSubscription::GetList(array("ID" => "ASC"), array("RUBRIC_MULTI" => $aPostRub, "CONFIRMED" => "Y", "ACTIVE" => "Y", "FORMAT" => $post_arr["SUBSCR_FORMAT"], "EMAIL" => $post_arr["EMAIL_FILTER"])); while ($subscr_arr = $subscr->Fetch()) { $aEmail[] = $subscr_arr["EMAIL"]; } //send to user groups $aPostGrp = array(); $post_grp = CPostingGeneral::GetGroupList($post_arr["ID"]); while ($post_grp_arr = $post_grp->Fetch()) { $aPostGrp[] = $post_grp_arr["ID"]; } if (count($aPostGrp) > 0) { $user = CUser::GetList($b = "id", $o = "asc", array("GROUP_MULTI" => $aPostGrp, "ACTIVE" => "Y", "EMAIL" => $post_arr["EMAIL_FILTER"])); while ($user_arr = $user->Fetch()) { $aEmail[] = $user_arr["EMAIL"]; } } //from additional emails $BCC = $post_arr["BCC_FIELD"]; if ($post_arr["DIRECT_SEND"] == "Y") { $BCC .= ($BCC != "" ? "," : "") . $post_arr["TO_FIELD"]; } if ($BCC != "") { $BCC = str_replace("\r\n", "\n", $BCC); $BCC = str_replace("\n", ",", Trim($BCC)); $aBcc = explode(",", $BCC); for ($i = 0; $i < count($aBcc); $i++) { if (Trim($aBcc[$i]) != "") { $aEmail[] = Trim($aBcc[$i]); } } } $aEmail = array_unique($aEmail); return $aEmail; }
?> "> <input type="reset" name="Reset" value="<?php echo GetMessage("post_reset"); ?> "> <input type="hidden" name="search" value="search"> <input type="hidden" name="lang" value="<?php echo LANG; ?> "> <?php $tabControl->End(); $aEmail = array(); /*subscribers*/ $subscr = CSubscription::GetList(array("ID" => "ASC"), array("RUBRIC_MULTI" => $RUB_ID, "CONFIRMED" => "Y", "ACTIVE" => "Y", "FORMAT" => $SUBSCR_FORMAT, "EMAIL" => $EMAIL_FILTER)); while ($subscr_arr = $subscr->Fetch()) { $aEmail[$subscr_arr["EMAIL"]] = 1; } /*users by groups*/ if (is_array($GROUP_ID) && count($GROUP_ID) > 0) { $arFilter = array("ACTIVE" => "Y", "EMAIL" => $EMAIL_FILTER); if (!in_array(2, $GROUP_ID)) { $arFilter["GROUP_MULTI"] = $GROUP_ID; } $user = CUser::GetList($b = "id", $o = "asc", $arFilter); while ($user_arr = $user->Fetch()) { if (strlen($user_arr["EMAIL"]) > 0) { $aEmail[$user_arr["EMAIL"]] = 1; } }
/** * Returns subscribers depended on side filter fields. * * @return \CDBResult */ public function getData() { $filter = array(); $rubric = $this->getFieldValue('RUBRIC', null); if ($rubric) { $filter['RUBRIC'] = $rubric; } $active = $this->getFieldValue('ACTIVE', null); if ($active) { $filter['ACTIVE'] = $active; } $confirmed = $this->getFieldValue('CONFIRMED', null); if ($confirmed) { $filter['CONFIRMED'] = $confirmed; } $dateInsertFrom = $this->getFieldValue('DATE_INSERT_FROM', null); if ($dateInsertFrom) { $filter['INSERT_1'] = $dateInsertFrom; } $dateInsertTo = $this->getFieldValue('DATE_INSERT_TO', null); if ($dateInsertTo) { $filter['INSERT_2'] = $dateInsertTo; } $subscriberList = \CSubscription::GetList(array('ID' => 'ASC'), $filter); return $subscriberList; }