-# {{{ BEGIN BPS TAGGED BLOCK
+# BEGIN BPS TAGGED BLOCK {{{
#
# COPYRIGHT:
#
-# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC
# <jesse@bestpractical.com>
#
# (Except where explicitly superseded by other copyright notices)
#
# 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/copyleft/gpl.html.
#
#
# CONTRIBUTION SUBMISSION POLICY:
# works based on those contributions, and sublicense and distribute
# those contributions and any derivatives thereof.
#
-# }}} END BPS TAGGED BLOCK
+# END BPS TAGGED BLOCK }}}
=head1 NAME
RT::Scrips - a collection of RT Scrip objects
=cut
+
+package RT::Scrips;
+
use strict;
no warnings qw(redefine);
=head2 Apply
-Run through the relevant scrips.
+Run through the relevant scrips. Scrips will run in order based on
+description. (Most common use case is to prepend a number to the description,
+forcing the scrips to run in ascending alphanumerical order.)
=cut
# {{{ sup _SetupSourceObjects
+
=head2 _SetupSourceObjects { TicketObj , Ticket, Transaction, TransactionObj }
Setup a ticket and transaction for this Scrip collection to work with as it runs through the
=head2 _FindScrips
-Find only the apropriate scrips for whatever we're doing now
+Find only the apropriate scrips for whatever we're doing now. Order them
+by their description. (Most common use case is to prepend a number to the
+description, forcing the scrips to display and run in ascending alphanumerical
+order.)
=cut
$self->LimitToQueue( $self->{'TicketObj'}->QueueObj->Id )
; #Limit it to $Ticket->QueueObj->Id
- $self->LimitToGlobal()
- unless $self->{'TicketObj'}->QueueObj->Disabled; # or to "global"
+ $self->LimitToGlobal();
+ # or to "global"
$self->Limit( FIELD => "Stage", VALUE => $args{'Stage'} );
);
#We only want things where the scrip applies to this sort of transaction
- $self->Limit(
- ALIAS => $ConditionsAlias,
- FIELD => 'ApplicableTransTypes',
- OPERATOR => 'LIKE',
- VALUE => $args{'Type'},
- ENTRYAGGREGATOR => 'OR',
- )
- if $args{'Type'};
+ # TransactionBatch stage can define list of transaction
+ foreach( split /\s*,\s*/, ($args{'Type'} || '') ) {
+ $self->Limit(
+ ALIAS => $ConditionsAlias,
+ FIELD => 'ApplicableTransTypes',
+ OPERATOR => 'LIKE',
+ VALUE => $_,
+ ENTRYAGGREGATOR => 'OR',
+ )
+ }
# Or where the scrip applies to any transaction
$self->Limit(
ENTRYAGGREGATOR => 'OR',
);
+ # Promise some kind of ordering
+ $self->OrderBy( FIELD => 'description' );
+
$RT::Logger->debug("Found ".$self->Count. " scrips");
}