summaryrefslogtreecommitdiff
path: root/rt/lib/RT/Action/ScheduledResolve.pm
diff options
context:
space:
mode:
authormark <mark>2011-08-23 21:46:34 +0000
committermark <mark>2011-08-23 21:46:34 +0000
commitab8aef9ec21df4b149f39cd24c9c5f3542dd2e3e (patch)
treeceaa135796c9d158e12f8ce7b3c55ad4df2ab774 /rt/lib/RT/Action/ScheduledResolve.pm
parentb431ece7b4a71aa5771f44393da582692f668817 (diff)
RT future ticket resolve, #13853
Diffstat (limited to 'rt/lib/RT/Action/ScheduledResolve.pm')
-rw-r--r--rt/lib/RT/Action/ScheduledResolve.pm37
1 files changed, 37 insertions, 0 deletions
diff --git a/rt/lib/RT/Action/ScheduledResolve.pm b/rt/lib/RT/Action/ScheduledResolve.pm
new file mode 100644
index 000000000..6b323cb6f
--- /dev/null
+++ b/rt/lib/RT/Action/ScheduledResolve.pm
@@ -0,0 +1,37 @@
+package RT::Action::ScheduledResolve;
+
+use strict;
+use warnings;
+
+use base qw(RT::Action);
+
+=head1 DESCRIPTION
+
+If the ticket's WillResolve date is in the past, set its status to resolved.
+
+=cut
+
+sub Prepare {
+ my $self = shift;
+
+ return undef if grep { $self->TicketObj->Status eq $_ } (
+ 'resolved',
+ 'rejected',
+ 'deleted'
+ ); # don't resolve from any of these states.
+ my $time = $self->TicketObj->WillResolveObj->Unix;
+ return ( $time > 0 and $time < time() );
+}
+
+sub Commit {
+ my $self = shift;
+
+ my $never = RT::Date->new($self->CurrentUser);
+ $never->Unix(-1);
+ $self->TicketObj->SetWillResolve($never->ISO);
+ $self->TicketObj->SetStatus('resolved');
+}
+
+RT::Base->_ImportOverlays();
+
+1;