Хук для формит отправки письма sendex В поиске

Дней на работу: 1 Стоимость работы: 400 Дополнение: sendex, formit

Нужен хук, который будет отправлять письмо из заготовленной рассылки sendex после того, как зареганный юзер воспользуется формой связи, отправив сообщение.

Полная картина того что есть:

— зареганный юзер (login)
— formit
— sendex

Юзер зареган и подписан на заготволенную определенную рассылку. Когда он шлет письмо с формы связи, то ему, ему одному, не всем подписчикам, уходит письмо из рассылки. Все. Кто знает xPDO и sendex, полчаса работы.

Еще один момент, который обязательное условие для отправки письма — это прикрепленный аттач файл к форме. Но это условие я реализовал чз php. Простейшая проверка на наличие файла. Он работает, тут думать ни о чем не надо.

Я смог наковырять такой хук:

<?php
$modx->addPackage('sendex', MODX_CORE_PATH . 'components/sendex/model/');

if ($_FILES['contact_attachment']['size'] > 0) {

$q = $modx->newQuery('sxQueue');
$queue = $modx->getCollection('sxQueue');
/** @var sxQueue $email */
foreach ($queue as $email) {
	$email->send();
}

}

return true;
Но он засылает все письма всем подписчикам, а нужно — только отправителю и только определенную рассылку. Надо немного допилить перепилить. и все.
09 августа 2016, 13:20    Виктор   
2    404

Комментарии (11)

  1. Марат Марабар 09 августа 2016, 15:43 # 0
    Попробуй так.

    $queue = $modx->getObject('sxQueue' array(
    	'subscriber_id' => 1,  // ID рассылки
    	'newsletter_id' => $userId,  // ID юзера
    ));
    
    if ($queue)
    	$queue->send();
    
    1. Виктор 09 августа 2016, 15:58 # 0
      где то синтаксическая ошибка
      prntscr.com/c3ih4n

      на первую строку ругается, и не работает…
      1. Марат Марабар 09 августа 2016, 16:02 # +1
        Запятой нет перед array()
        $queue = $modx->getObject('sxQueue,' array(
        	'subscriber_id' => 1,  // ID рассылки
        	'newsletter_id' => $userId,  // ID юзера
        ));
        
        if ($queue)
        	$queue->send();
        
        1. Виктор 09 августа 2016, 16:07 # 0
          угу. от ошибки избавились, но не работает… не уходят письма из очереди
          1. Виктор 09 августа 2016, 16:22 # 0
            еще будет какой нибудь вариант?) этот похож на правду, но отчего то не рабоатет
            1. Пётр Молчанов 09 августа 2016, 16:44 # +1
              А ты id рассылки-то свой ставишь? и id юзера, наверное, надо брать так $modx->user->id
              1. Евгений Webinmd 09 августа 2016, 16:49 # +1
                subscriber_id — id юзера
                newsletter_id — id рассылки, а в коде наоборот
                1. Марат Марабар 09 августа 2016, 18:26 # +1
                  Сейчас дам рабочий вариант.
                  1. Виктор 09 августа 2016, 18:41 # 0
                    да, id рассылки ставлю верный, в моем случае 2. но с последовательностью — верно подмечено! и с определением id. нужно вот так:

                    $modx->user->id
                    и получилось! невероятно.

                    вот и рабочий вариант:

                    <?php
                    $modx->addPackage('sendex', MODX_CORE_PATH . 'components/sendex/model/');
                    
                    if ($_FILES['contact_attachment']['size'] > 0) {
                    
                    $queue = $modx->getObject('sxQueue', array(
                    	'subscriber_id' => $modx->user->id,  // ID рассылки
                    	'newsletter_id' => 2,  // ID юзера
                    ));
                    
                    if ($queue)
                    	$queue->send();
                    
                    }
                    
                    return true;
                    вроде, все работает как надо. шикарно ребята, спасибо!

                    особое спасибо Марабару, и вам ребята, за доп. подсказки. можете напсиать кошельки, поделим бюджет по братски :)
                    1. Марат Марабар 09 августа 2016, 19:15 # +1
                      По памяти писал. Если отправляет — хорошо.
          2. Евгения 13 февраля 2017, 13:31 # 0
            Коллеги, я дико извиняюсь, но не могли бы Вы написать более расширенно «как пользоваться данный хуком»?
            Я начинающий в модХ и не программист еще.
            Куда писать данный код? В какой файл?..
            Вы должны авторизоваться, чтобы оставлять комментарии.