summaryrefslogtreecommitdiff
path: root/rt/lib
diff options
context:
space:
mode:
authorMitch Jackson <mitch@freeside.biz>2017-11-30 20:28:40 +0000
committerMitch Jackson <mitch@freeside.biz>2017-11-30 20:29:17 +0000
commit603d84b691c7496bb2ec1cddc549fcc7b80e3e38 (patch)
treedfdd12903f6f52b781a46e72ac1016793f8915b6 /rt/lib
parent1f24086e325f98eb92b0bc0f6aa60119d3c0340f (diff)
RT# 75322 Add ticket action Quiet Resolve
Diffstat (limited to 'rt/lib')
-rw-r--r--rt/lib/RT/Condition/StatusChangeQuietResolve.pm48
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;