# BEGIN BPS TAGGED BLOCK {{{
-#
+#
# COPYRIGHT:
-#
-# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC
-# <jesse@bestpractical.com>
-#
+#
+# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+# <sales@bestpractical.com>
+#
# (Except where explicitly superseded by other copyright notices)
-#
-#
+#
+#
# 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 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.
-#
-#
+#
+#
# 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.)
-#
+#
# 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
# 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
RT::Scrip - an RT Scrip object
=head1 METHODS
-=begin testing
-
-ok (require RT::Scrip);
-
-
-my $q = RT::Queue->new($RT::SystemUser);
-$q->Create(Name => 'ScripTest');
-ok($q->Id, "Created a scriptest queue");
-
-my $s1 = RT::Scrip->new($RT::SystemUser);
-my ($val, $msg) =$s1->Create( Queue => $q->Id,
- ScripAction => 'User Defined',
- ScripCondition => 'User Defined',
- CustomIsApplicableCode => 'if ($self->TicketObj->Subject =~ /fire/) { return (1);} else { return(0)}',
- CustomPrepareCode => 'return 1',
- CustomCommitCode => '$self->TicketObj->SetPriority("87");',
- Template => 'Blank'
- );
-ok($val,$msg);
-
-my $ticket = RT::Ticket->new($RT::SystemUser);
-my ($tv,$ttv,$tm) = $ticket->Create(Queue => $q->Id,
- Subject => "hair on fire",
- );
-ok($tv, $tm);
-
-ok ($ticket->Priority == '87', "Ticket priority is set right");
-
-
-my $ticket2 = RT::Ticket->new($RT::SystemUser);
-my ($t2v,$t2tv,$t2m) = $ticket2->Create(Queue => $q->Id,
- Subject => "hair in water",
- );
-ok($t2v, $t2m);
-
-ok ($ticket2->Priority != '87', "Ticket priority is set right");
-
-
-=end testing
=cut
CustomPrepareCode => undef,
CustomCommitCode => undef,
CustomIsApplicableCode => undef,
+ ConditionRules => undef,
+ ActionRules => undef,
@_
);
unless ( $args{'Queue'} ) {
unless ( $self->CurrentUser->HasRight( Object => $RT::System,
- Right => 'ModifyScrips' )
- ) {
+ Right => 'ModifyScrips' ) )
+ {
return ( 0, $self->loc('Permission Denied') );
}
$args{'Queue'} = 0; # avoid undef sneaking in
unless ( $QueueObj->CurrentUserHasRight('ModifyScrips') ) {
return ( 0, $self->loc('Permission Denied') );
}
- $args{'Queue'} = $QueueObj->id();
+ $args{'Queue'} = $QueueObj->id;
}
#TODO +++ validate input
unless $args{'ScripAction'};
my $action = RT::ScripAction->new( $self->CurrentUser );
$action->Load( $args{'ScripAction'} );
- return ( 0, $self->loc( "Action [_1] not found", $args{'ScripAction'} ) )
+ return ( 0, $self->loc( "Action '[_1]' not found", $args{'ScripAction'} ) )
unless $action->Id;
require RT::Template;
unless $args{'Template'};
my $template = RT::Template->new( $self->CurrentUser );
$template->Load( $args{'Template'} );
- return ( 0, $self->loc('Template not found') )
+ return ( 0, $self->loc( "Template '[_1]' not found", $args{'Template'} ) )
unless $template->Id;
require RT::ScripCondition;
unless $args{'ScripCondition'};
my $condition = RT::ScripCondition->new( $self->CurrentUser );
$condition->Load( $args{'ScripCondition'} );
- return ( 0, $self->loc('Condition not found') )
+ return ( 0, $self->loc( "Condition '[_1]' not found", $args{'ScripCondition'} ) )
unless $condition->Id;
my ( $id, $msg ) = $self->SUPER::Create(
CustomPrepareCode => $args{'CustomPrepareCode'},
CustomCommitCode => $args{'CustomCommitCode'},
CustomIsApplicableCode => $args{'CustomIsApplicableCode'},
+ ConditionRules => $args{'ConditionRules'},
+ ActionRules => $args{'ActionRules'},
);
if ( $id ) {
return ( $id, $self->loc('Scrip Created') );
=head2 ConditionObj
-Retuns an RT::ScripCondition object with this Scrip's IsApplicable
+Retuns an L<RT::ScripCondition> object with this Scrip's IsApplicable
=cut
sub ConditionObj {
my $self = shift;
- unless ( defined $self->{'ScripConditionObj'} ) {
- require RT::ScripCondition;
- $self->{'ScripConditionObj'} =
- RT::ScripCondition->new( $self->CurrentUser );
- if ( $self->ScripCondition ) {
- $self->{'ScripConditionObj'}->Load( $self->ScripCondition );
- }
- }
- return ( $self->{'ScripConditionObj'} );
+ my $res = RT::ScripCondition->new( $self->CurrentUser );
+ $res->Load( $self->ScripCondition );
+ return $res;
}
# }}}
+=head2 LoadModules
+
+Loads scrip's condition and action modules.
+
+=cut
+
+sub LoadModules {
+ my $self = shift;
+
+ $self->ConditionObj->LoadCondition;
+ $self->ActionObj->LoadAction;
+}
+
# {{{ sub TemplateObj
=head2 TemplateObj
}
}
};
+
if ($@) {
$RT::Logger->error( "Scrip IsApplicable " . $self->Id . " died. - " . $@ );
return (undef);
# }}}
+
+=head2 SetScripAction
+
+=cut
+
+sub SetScripAction {
+ my $self = shift;
+ my $value = shift;
+
+ return ( 0, $self->loc("Action is mandatory argument") ) unless $value;
+
+ require RT::ScripAction;
+ my $action = RT::ScripAction->new( $self->CurrentUser );
+ $action->Load($value);
+ return ( 0, $self->loc( "Action '[_1]' not found", $value ) )
+ unless $action->Id;
+
+ return $self->_Set( Field => 'ScripAction', Value => $action->Id );
+}
+
+=head2 SetScripCondition
+
+=cut
+
+sub SetScripCondition {
+ my $self = shift;
+ my $value = shift;
+
+ return ( 0, $self->loc("Condition is mandatory argument") )
+ unless $value;
+
+ require RT::ScripCondition;
+ my $condition = RT::ScripCondition->new( $self->CurrentUser );
+ $condition->Load($value);
+
+ return ( 0, $self->loc( "Condition '[_1]' not found", $value ) )
+ unless $condition->Id;
+
+ return $self->_Set( Field => 'ScripCondition', Value => $condition->Id );
+}
+
+=head2 SetTemplate
+
+=cut
+
+sub SetTemplate {
+ my $self = shift;
+ my $value = shift;
+
+ return ( 0, $self->loc("Template is mandatory argument") ) unless $value;
+
+ require RT::Template;
+ my $template = RT::Template->new( $self->CurrentUser );
+ $template->Load($value);
+ return ( 0, $self->loc( "Template '[_1]' not found", $value ) )
+ unless $template->Id;
+
+ return $self->_Set( Field => 'Template', Value => $template->Id );
+}
+
1;