Автоматическая подписка при регистрации в2рассылки

Добрый день, нашел плагин для sendex который реализует подписку пользователей при регистрации на 1 рассылку:
<?php
if ($modx->event->name == 'OnUserSave') {
        if ($user && $mode == 'new') {
                $Sendex = $modx->getService('sendex','Sendex',$modx->getOption('sendex_core_path',null,$modx->getOption('core_path').'components/sendex/').'model/sendex/');
                if (!($Sendex instanceof Sendex)) return '';
                
                // Указать ID рассылки
                $idNewsletter = 2;
                
                $profile = $user->getOne('Profile');
                $userId = $profile->get('internalKey');
                $userEmail = $profile->get('email');
                
                $duble = $modx->getObject('sxSubscriber', array('email' => $userEmail));
                if ($duble) {return;}
                
                if ($userId) {
                    
                        $obj = $modx->newObject('sxSubscriber');
                        
                        $data = array(
                                'user_id' => $userId,
                                'email' => $userEmail,
                                'newsletter_id' => $idNewsletter,
                                );
 
                        $obj->fromArray($data);
                        $obj->save();
                }
        }
        
        return;
}
Вопрос вот в чем, как реализовать подписку сразу на 2 id, пробовал создать второй плагин, и вешать на другое событие (OnUserActivate), не работает.
Fergus Sawyer
08 декабря 2016, 10:27
modx.pro
1
1 341
0

Комментарии: 5

Илья Уткин
08 декабря 2016, 14:14
+3
<?php
if ($modx->event->name == 'OnUserSave') {
        if ($user && $mode == 'new') {
                $Sendex = $modx->getService('sendex','Sendex',$modx->getOption('sendex_core_path',null,$modx->getOption('core_path').'components/sendex/').'model/sendex/');
                if (!($Sendex instanceof Sendex)) return '';
                
                // Указать ID рассылок
                $idNewsletters = array(2,3);
                
                $profile = $user->getOne('Profile');
                $userId = $profile->get('internalKey');
                $userEmail = $profile->get('email');
                
                $duble = $modx->getObject('sxSubscriber', array('email' => $userEmail));
                if ($duble) {return;}
                
                if ($userId) {
                    foreach ($idNewsletters as $idNewsletter) {
                        $obj = $modx->newObject('sxSubscriber');
                        
                        $data = array(
                                'user_id' => $userId,
                                'email' => $userEmail,
                                'newsletter_id' => $idNewsletter,
                                );
 
                        $obj->fromArray($data);
                        $obj->save();
                    }
                }
        }
        
        return;
}
    Fergus Sawyer
    08 декабря 2016, 14:21
    0
    Не работает :(
      Fergus Sawyer
      08 декабря 2016, 14:38
      0
      Мои извинения, все работает :) Спасибо!
    Марат Марабар
    08 декабря 2016, 21:34
    0
    О! Узнал знакомый почерк)).
    Рад, что всё получилось!
      Андрей
      28 мая 2020, 13:14
      0
      а как реализовать подобное, но с автоматическим выбором id подписки в зависимости от языка регистрирующегося пользователя?

      К примеру, пользователь регистрируется с /en/ версии ресурса — ему присваивается id 1, а если с /ru/ то id 2
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        5