rt 4.2.13 ticket#13852
[freeside.git] / rt / lib / RT / Action / LinearEscalate.pm
index 9130f40..23a796c 100755 (executable)
@@ -1,40 +1,40 @@
 # BEGIN BPS TAGGED BLOCK {{{
 # BEGIN BPS TAGGED BLOCK {{{
-# 
+#
 # COPYRIGHT:
 # COPYRIGHT:
-# 
-# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC
-#                                          <jesse@bestpractical.com>
-# 
+#
+# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC
+#                                          <sales@bestpractical.com>
+#
 # (Except where explicitly superseded by other copyright notices)
 # (Except where explicitly superseded by other copyright notices)
-# 
-# 
+#
+#
 # LICENSE:
 # LICENSE:
-# 
+#
 # This work is made available to you under the terms of Version 2 of
 # the GNU General Public License. A copy of that license should have
 # been provided with this software, but in any event can be snarfed
 # from www.gnu.org.
 # This work is made available to you under the terms of Version 2 of
 # the GNU General Public License. A copy of that license should have
 # been provided with this software, but in any event can be snarfed
 # from www.gnu.org.
-# 
+#
 # This work is distributed in the hope that it will be useful, but
 # WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 # General Public License for more details.
 # This work is distributed in the hope that it will be useful, but
 # WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 # General Public License for more details.
-# 
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 # 02110-1301 or visit their web page on the internet at
 # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 # 02110-1301 or visit their web page on the internet at
 # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-# 
-# 
+#
+#
 # CONTRIBUTION SUBMISSION POLICY:
 # CONTRIBUTION SUBMISSION POLICY:
-# 
+#
 # (The following paragraph is not intended to limit the rights granted
 # to you to modify and distribute this software under the terms of
 # the GNU General Public License and is only of importance to you if
 # you choose to contribute your changes and enhancements to the
 # community by submitting them to Best Practical Solutions, LLC.)
 # (The following paragraph is not intended to limit the rights granted
 # to you to modify and distribute this software under the terms of
 # the GNU General Public License and is only of importance to you if
 # you choose to contribute your changes and enhancements to the
 # community by submitting them to Best Practical Solutions, LLC.)
-# 
+#
 # By intentionally submitting any modifications, corrections or
 # derivatives to this work, or any other work intended for use with
 # Request Tracker, to Best Practical Solutions, LLC, you confirm that
 # By intentionally submitting any modifications, corrections or
 # derivatives to this work, or any other work intended for use with
 # Request Tracker, to Best Practical Solutions, LLC, you confirm that
@@ -43,7 +43,7 @@
 # royalty-free, perpetual, license to use, copy, create derivative
 # works based on those contributions, and sublicense and distribute
 # those contributions and any derivatives thereof.
 # royalty-free, perpetual, license to use, copy, create derivative
 # works based on those contributions, and sublicense and distribute
 # those contributions and any derivatives thereof.
-# 
+#
 # END BPS TAGGED BLOCK }}}
 
 =head1 NAME
 # END BPS TAGGED BLOCK }}}
 
 =head1 NAME
@@ -98,7 +98,7 @@ the Due date. Tickets without due date B<are not updated>.
 =head1 CONFIGURATION
 
 Initial and Final priorities are controlled by queue's options
 =head1 CONFIGURATION
 
 Initial and Final priorities are controlled by queue's options
-and can be defined using the web UI via Configuration tab. This
+and can be defined using the web UI via Admin tab. This
 action should handle correctly situations when initial priority
 is greater than final.
 
 action should handle correctly situations when initial priority
 is greater than final.
 
@@ -140,8 +140,6 @@ use strict;
 use warnings;
 use base qw(RT::Action);
 
 use warnings;
 use base qw(RT::Action);
 
-our $VERSION = '0.06';
-
 #Do what we need to do and send it out.
 
 #What does this type of Action does
 #Do what we need to do and send it out.
 
 #What does this type of Action does
@@ -157,8 +155,7 @@ sub Prepare {
 
     my $ticket = $self->TicketObj;
 
 
     my $ticket = $self->TicketObj;
 
-    my $due = $ticket->DueObj->Unix;
-    unless ( $due > 0 ) {
+    unless ( $ticket->DueObj->IsSet ) {
         $RT::Logger->debug('Due is not set. Not escalating.');
         return 1;
     }
         $RT::Logger->debug('Due is not set. Not escalating.');
         return 1;
     }
@@ -183,9 +180,8 @@ sub Prepare {
     # now we know we have a due date. for every day that passes,
     # increment priority according to the formula
 
     # now we know we have a due date. for every day that passes,
     # increment priority according to the formula
 
-    my $starts         = $ticket->StartsObj->Unix;
-    $starts            = $ticket->CreatedObj->Unix unless $starts > 0;
-    my $now            = time;
+    my $starts = $ticket->StartsObj->IsSet ? $ticket->StartsObj->Unix : $ticket->CreatedObj->Unix;
+    my $now    = time;
 
     # do nothing if we didn't reach starts or created date
     if ( $starts > $now ) {
 
     # do nothing if we didn't reach starts or created date
     if ( $starts > $now ) {
@@ -193,12 +189,13 @@ sub Prepare {
         return 1;
     }
 
         return 1;
     }
 
+    my $due = $ticket->DueObj->Unix;
     $due = $starts + 1 if $due <= $starts; # +1 to avoid div by zero
 
     my $percent_complete = ($now-$starts)/($due - $starts);
 
     my $new_priority = int($percent_complete * $priority_range) + ($ticket->InitialPriority || 0);
     $due = $starts + 1 if $due <= $starts; # +1 to avoid div by zero
 
     my $percent_complete = ($now-$starts)/($due - $starts);
 
     my $new_priority = int($percent_complete * $priority_range) + ($ticket->InitialPriority || 0);
-       $new_priority = $ticket->FinalPriority if $new_priority > $ticket->FinalPriority;
+    $new_priority = $ticket->FinalPriority if $new_priority > $ticket->FinalPriority;
     $self->{'new_priority'} = $new_priority;
 
     return 1;
     $self->{'new_priority'} = $new_priority;
 
     return 1;
@@ -263,10 +260,7 @@ sub Commit {
     return 1;
 }
 
     return 1;
 }
 
-eval "require RT::Action::LinearEscalate_Vendor";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/LinearEscalate_Vendor.pm} );
-eval "require RT::Action::LinearEscalate_Local";
-die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/LinearEscalate_Local.pm} );
+RT::Base->_ImportOverlays();
 
 1;
 
 
 1;