Рассылка Sendex

Всем привет.
Имеется следующая задача: Автоматически добавлять пользователя в рассылку и удалять из нее по ссылке отписки.

При создании заказа в minishop автоматом e-mail вносится в систему. Можно ли как-нибудь перехватить данное событие и при внесении пользователю назначать его в нужную мне группу?

И сделать чтобы если пользователя удалили из подписки, он туда больше не попадал, если только не назначить вручную.

Или может у кого есть более красивый метод???

Спасибо
Слава
17 августа 2015, 18:24
modx.pro
5
1 529
0

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

Слава
19 августа 2015, 10:19
0
Реализовал сам, но не знаю на сколько верно.

1. Создал плагин на событие сохранения нового пользователя.
При сохранении данный пользователь добавляется в рассылку Sendex и дополнительно вносится в группу рассылок
switch ($modx->event->name) {
        case 'OnUserSave':
            if ($user && $mode == 'new') {
                if ($profile = $user->getOne('Profile')) {
                    $id = $profile->get('id');
                    $new_mail = $profile->get('email');
                }
                if ($id) {
/*******Добавляем в группу рассылки новый сохраняемого пользователя**********/
                    if ($gr = $modx->newObject('modUserGroupMember')) {
                        $gr->set('user_group', 2);
                        $gr->set('member', $id);
                        $gr->set('role', 0);
                        $gr->set('rank', 0);
                        $gr->save();
 }


/*******Добавляю текущего сохраняемого пользователя в рассылку SENDEX*********/
$template=2;
$hash = sha1(uniqid(sha1($id . $template . $new_mail), true));

                        $sql1  = 'INSERT INTO modx_sendex_subscribers (user_id,email,newsletter_id,code) VALUES('.$id.',"'.$new_mail.'",'.$template.',"'.$hash.'")';
                        $query = new xPDOCriteria($modx, $sql1, array());
                        if ($query->prepare() && $query->stmt->execute()) { $query->stmt->fetchAll(PDO::FETCH_ASSOC); }
                }
            }
            break;
    }

2. Сделал кнопку отписаться в письме, при которой происходит удаления из рассылки + удаления из группы рассылок.

$id = $_GET['id'];

                if (isset($id)) {
/*******Удаляю из группы рассылок**********/

                        $sql2  = 'DELETE FROM modx_member_groups where member='.$id.' AND user_group=2';
                        $query = new xPDOCriteria($modx, $sql2, array());
                        if ($query->prepare() && $query->stmt->execute()) { $query->stmt->fetchAll(PDO::FETCH_ASSOC); }
            


/*******Удаляю из рассылок в  SENDEX*********/

                        $sql1  = 'DELETE FROM modx_sendex_subscribers where user_id='.$id.' ';
                        $query = new xPDOCriteria($modx, $sql1, array());
                        if ($query->prepare() && $query->stmt->execute()) { $query->stmt->fetchAll(PDO::FETCH_ASSOC); }
                }

Оцените верно все сделал…

И еще в Sendex столкнулся с неприятностью — нет кнопки удаления всех пользователей из рассылки разом.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1