X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Flib%2FRT%2FCondition%2FStatusChangeQuietResolve.pm;fp=rt%2Flib%2FRT%2FCondition%2FStatusChangeQuietResolve.pm;h=8426141826bf63009ad1bc1073d96785f386f3df;hp=0000000000000000000000000000000000000000;hb=603d84b691c7496bb2ec1cddc549fcc7b80e3e38;hpb=1f24086e325f98eb92b0bc0f6aa60119d3c0340f diff --git a/rt/lib/RT/Condition/StatusChangeQuietResolve.pm b/rt/lib/RT/Condition/StatusChangeQuietResolve.pm new file mode 100644 index 000000000..842614182 --- /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;