summaryrefslogtreecommitdiff
path: root/rt/lib/RT/Action
diff options
context:
space:
mode:
authormark <mark>2011-08-23 21:45:51 +0000
committermark <mark>2011-08-23 21:45:51 +0000
commit4c8c18409f82d56320a80f6c94f275fa15486897 (patch)
treedeeb2cb64572fb1cd00cb55be48eaa68a69d9984 /rt/lib/RT/Action
parent006b2392be94f9670eddf3d01ba89c00f9c16c05 (diff)
RT future ticket resolve, #13853
Diffstat (limited to 'rt/lib/RT/Action')
-rw-r--r--rt/lib/RT/Action/ScheduledResolve.pm37
-rw-r--r--rt/lib/RT/Action/SetWillResolve.pm27
2 files changed, 64 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;
diff --git a/rt/lib/RT/Action/SetWillResolve.pm b/rt/lib/RT/Action/SetWillResolve.pm
new file mode 100644
index 000000000..807b3c64c
--- /dev/null
+++ b/rt/lib/RT/Action/SetWillResolve.pm
@@ -0,0 +1,27 @@
+package RT::Action::SetWillResolve;
+use base 'RT::Action';
+
+use strict;
+
+sub Describe {
+ my $self = shift;
+ return (ref $self ." will set a ticket's future resolve date to the argument.");
+}
+
+sub Prepare {
+ return 1;
+}
+
+sub Commit {
+ my $self = shift;
+ my $DateObj = RT::Date->new( $self->CurrentUser );
+ $DateObj->Set(
+ Format => 'unknown',
+ Value => $self->Argument,
+ );
+ $self->TicketObj->SetWillResolve( $DateObj->ISO );
+}
+
+RT::Base->_ImportOverlays();
+
+1;