Уведомление пользователей о новом тикете

Друзья, помогите дописать плагин уведомления администратора сайта о новом тикете/об изменении существующего тикета. Написал следующий вариант:
<?php
switch ($modx->event->name) {
    case 'OnBeforeDocFormSave':
 
        if ($mode == 'new' || $mode == 'upd' && $resource->class_key == "Ticket") {  
            $resource->set('published', 0);                               
            $modx->getService('mail', 'mail.modPHPMailer');
            $modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
            $modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name'));
            
            $user_vo = $resource->get('createdby');
			$theme_vo = $resource->get('pagetitle');
			$user = $modx->getUser();
			$username = $user->username;
            
            $modx->mail->address('to', 'mail@mail.ru');
            if ($mode == 'new') {
                $modx->mail->set(modMail::MAIL_SUBJECT, 'New resourse on the site');
                $modx->mail->set(modMail::MAIL_BODY, $modx->getChunk('dino__new_ticket.tpl', array('pagetitle'=>$theme_vo, 'createdby' => $user_vo, 'username' => $username)));
                }
            if ($mode == 'upd') {
                $modx->mail->set(modMail::MAIL_SUBJECT, 'User edited resourse');
                $modx->mail->set(modMail::MAIL_BODY, $modx->getChunk('dino__edit_ticket.tpl', array('pagetitle'=>$theme_vo, 'createdby' => $user_vo, 'username' => $username)));
                }
            $modx->mail->setHTML(true);
            if (!$modx->mail->send()) {
                $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send an email: '.$modx->mail->mailer->ErrorInfo);
            }
            $modx->mail->reset();
 
        }
 
        $resource->save();
 
    break;
}
Все хорошо. Админ уведомляется и при новом тикете и при изменении тикета. НО. Когда администратор заходит в тикет из админки и правит его, задает ему время снятия с публикации, уведомление снова приходит админу на почту и тикет приобретает статус 0. После чего время жизни тикета из него уходит.
Как отменить уведомление админа при изменении самим же админом? + при сохранении админом тикета делать ему статус 1? Готов помочь материально за идею.
Антон
05 октября 2020, 21:47
modx.pro
473
0

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

Евгений Webinmd
05 октября 2020, 23:12
0
у ресурса есть поле editedby — туда попадает id редактора последнего, на сколько я понимаю. Получайте это значение или просто текущий id пользователя и по сути всё. Если id админа, то ничего не делать, иначе вот всё что вы написали
    Антон
    06 октября 2020, 09:03
    0
    прописывал вместо:
    $user = $modx->getUser();
    условие:
    if ($user->isMember('Administrator')){
        $resource->set('published', 1);
    } else {
        $resource->set('published', 0);
    }
    форма из фронтенда не отправляется. А когда админ редактирует из админки, система зависает в принципе.
      Евгений Webinmd
      06 октября 2020, 11:37
      0
      $modx->user->isMember('Administrator')
        Антон
        06 октября 2020, 12:16
        0
        все супер, но лучше отключить уведомления администратору о том, что он сам же внес изменения в ресурс.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4