diff options
author | Mitch Jackson <mitch@freeside.biz> | 2017-11-30 20:28:40 +0000 |
---|---|---|
committer | Mitch Jackson <mitch@freeside.biz> | 2017-11-30 20:29:17 +0000 |
commit | 603d84b691c7496bb2ec1cddc549fcc7b80e3e38 (patch) | |
tree | dfdd12903f6f52b781a46e72ac1016793f8915b6 /rt/lib | |
parent | 1f24086e325f98eb92b0bc0f6aa60119d3c0340f (diff) |
RT# 75322 Add ticket action Quiet Resolve
Diffstat (limited to 'rt/lib')
-rw-r--r-- | rt/lib/RT/Condition/StatusChangeQuietResolve.pm | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/rt/lib/RT/Condition/StatusChangeQuietResolve.pm b/rt/lib/RT/Condition/StatusChangeQuietResolve.pm new file mode 100644 index 0000000..8426141 --- /dev/null +++ b/rt/lib/RT/Condition/StatusChangeQuietResolve.pm @@ -0,0 +1,48 @@ +package RT::Condition::StatusChangeQuietResolve; +use base 'RT::Condition'; +use strict; +use warnings; + +=head2 DESCRIPTION + +This condition allows for muting of resolution notifications when +combined with the ticket status 'resolved_quiet' + +If status has been updated as 'resolved_quiet', this condition +will block notification, and update ticket status to 'resolved' + +If status has been updated as 'resolved', this condition +will block notification only if the previous ticket status +had been 'resolved_quiet' + +=cut + +sub IsApplicable { + my $self = shift; + my $txn = $self->TransactionObj; + my ($type, $field) = ($txn->Type, $txn->Field); + + return 0 + unless $type eq 'Status' + || ($type eq 'Set' && $field eq 'Status'); + + return 0 + unless $txn->NewValue eq 'resolved' + || $txn->NewValue eq 'resolved_quiet'; + + my $ticket = $self->TicketObj; + + if ($txn->NewValue eq 'resolved_quiet') { + $ticket->SetStatus('resolved'); + return 0; + } + elsif ($txn->NewValue eq 'resolved' && $txn->OldValue eq 'resolved_quiet') { + return 0; + } + + return 1; +} + +RT::Base->_ImportOverlays(); + +1; |