Уведомление пользователей о новом тикете
Друзья, помогите дописать плагин уведомления администратора сайта о новом тикете/об изменении существующего тикета. Написал следующий вариант:
Как отменить уведомление админа при изменении самим же админом? + при сохранении админом тикета делать ему статус 1? Готов помочь материально за идею.
<?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? Готов помочь материально за идею.
Комментарии: 4
у ресурса есть поле editedby — туда попадает id редактора последнего, на сколько я понимаю. Получайте это значение или просто текущий id пользователя и по сути всё. Если id админа, то ничего не делать, иначе вот всё что вы написали
прописывал вместо:
$user = $modx->getUser();
условие:if ($user->isMember('Administrator')){
$resource->set('published', 1);
} else {
$resource->set('published', 0);
}
форма из фронтенда не отправляется. А когда админ редактирует из админки, система зависает в принципе. $modx->user->isMember('Administrator')
все супер, но лучше отключить уведомления администратору о том, что он сам же внес изменения в ресурс.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.