Уведомление пользователя о публикации его тикета

Зарегистрированный пользователь создает тикет, тикет падает на проверку администратору. Тикет имеет статус неопубликовано до проверки админом.
Подскажите, как реализовать возможность уведомления пользователя, создавшего тикет, о публикации его тикета на сайте?
Антон
14 августа 2022, 17:21
modx.pro
681
0

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

Артур Шевченко
14 августа 2022, 21:31
1
0
Тикет это ресурс. У ресурса есть поле createdby, которое содержит Id пользователя создавшего тикет. У каждого пользователя, есть поле email. Так же modx генерирует системные события, в частности при сохранении ресурса возникает событие OnDocFormSave. Соответственно, нужно при сохранении ресурса проверять значение поля published у сохраняемого ресурса, если оно true, то нужно получить email пользователя и отправить ему уведомление. Ниже сниппет, который может это сделать
<?php
if(!isset($chunk)){
    $modx->log(1, 'Письмо не отправлено. Не передеан чанк');
    return false;
}

if(!isset($to)){
    $modx->log(1, 'Письмо не отправлено. Не передеан email получателя');
    return false;
}else{
    $to = explode (',',$to);
}

if(!isset($subject)){$subject = 'noreply@'.$_SERVER['HTTP_HOST'];}
if(!isset($from)){$from = 'noreply@'.$_SERVER['HTTP_HOST'];}
if(!isset($reply)){$reply = $from;}
if(!isset($fromName)){$fromName = $modx->getOption('site_name');}
if(!isset($params)){
    $params = array();
}elseif(!is_array($params)){
    $params = json_decode($params, 1);
}

$pdoTools = $modx->getService('pdoTools');
$modx->getService('mail', 'mail.modPHPMailer');

$message = $pdoTools->getChunk($chunk, $params);
$modx->mail->set(modMail::MAIL_BODY,$message);
$modx->mail->set(modMail::MAIL_FROM, $from);
$modx->mail->set(modMail::MAIL_FROM_NAME, $fromName);
$modx->mail->set(modMail::MAIL_SUBJECT, $subject);
foreach($to as $t){
    $modx->mail->address('to',$t);
}
$modx->mail->address('reply-to', $reply);
if(isset($attachment)){
    $modx->mail->attach($attachment);
}

$modx->mail->setHTML(true);
if (!$modx->mail->send()) {
    $modx->log(1,'При отправке письма произошла ошибка: '.$modx->mail->mailer->ErrorInfo);
}

$modx->mail->reset();

Пример вызова
$modx->runSnippet('sendEmail', array(
    'subject' => $hook->formit->config['emailSubjecct'], // тема письма
    'to' => $hook->formit->config['emailTo'], // email получателя
    'from' => $hook->formit->config['emailFrom'], // email отправителя
    'chunk' => $hook->formit->config['emailTpl'], // чанк письма
    'params' => $_POST // параметры, которые передаются в чанк письма
));
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1