Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

автоматическое добавление подписки пользователю

00 голосов
1
Не удается подписать текущего пользователя на рубрики рассылке через
CSubscription::Add
ошибка: Адрес подписки уже существует. Пожалуйста, укажите другой адрес.

как обойти?

возник вопрос - приведу код из офф.документации

Код
//there must be at least one newsletter category
if(!is_array($RUB_ID) || count($RUB_ID) == 0)
    $strWarning .= "There must be at least one category."."<br>";

if($strWarning == "")
{
    $arFields = Array(
        "USER_ID" => ($USER->IsAuthorized()? $USER->GetID():false),
        "FORMAT" => ($FORMAT <> "html"? "text":"html"),
        "EMAIL" => $EMAIL,
        "ACTIVE" => "Y",
        "RUB_ID" => $RUB_ID
    );
    $subscr = new CSubscription;

    //can add without authorization
    $ID = $subscr->Add($arFields);
    if($ID>0)
        CSubscription::Authorize($ID);
    else
        $strWarning .= "Error adding subscription: ".$subscr->LAST_ERROR."<br>";
}

под $RUB_ID понимается массив ID рубрик или выборка всех реквизитов через CRubric::GetList(
у меня возникает ошибка для ID рубрик
спросил 05 Март, 14 от Ymca (880 баллов)

1 Ответ

00 голосов
вопрос решился:
1. исправил на $subscr->Add Update
2. список рубрик текущего пользователя предварительно получал через CSubscription::GetRubricList(

PS все становится на свои места после изучения кода исходного системного компонента )
ответил 14 Авг, 14 от Ymca (880 баллов)

Похожие вопросы

0 голосов
1 ответ
0 голосов
1 ответ
спросил 06 Дек, 13 от Feniks (120 баллов)
0 голосов
5 ответов
спросил 04 Дек, 13 от XXeeper (160 баллов)
0 голосов
2 ответов
спросил 17 Авг, 13 от Yolana (160 баллов)
0 голосов
9 ответов