X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Flib%2FRT%2FScripAction.pm;h=dbc3429960f94a890ce9959c880fa2571ee13d94;hp=13ab47e03c2cf617fdccf64fea64c3a302fe336e;hb=187086c479a09629b7d180eec513fb7657f4e291;hpb=f3c4966ed1f6ec3db7accd6dcdd3a5a3821d72a7 diff --git a/rt/lib/RT/ScripAction.pm b/rt/lib/RT/ScripAction.pm index 13ab47e03..dbc342996 100755 --- a/rt/lib/RT/ScripAction.pm +++ b/rt/lib/RT/ScripAction.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2018 Best Practical Solutions, LLC # # # (Except where explicitly superseded by other copyright notices) @@ -48,21 +48,13 @@ =head1 NAME - RT::ScripAction - RT Action object - -=head1 SYNOPSIS - - use RT::ScripAction; - +RT::ScripAction - RT Action object =head1 DESCRIPTION -This module should never be called directly by client code. it's an internal module which -should only be accessed through exported APIs in other modules. - - - -=head1 METHODS +This module should never be called directly by client code. it's an +internal module which should only be accessed through exported APIs +in other modules. =cut @@ -74,31 +66,32 @@ use warnings; use base 'RT::Record'; -sub Table {'ScripActions'} - +sub Table {'ScripActions'} use RT::Template; sub _Accessible { my $self = shift; - my %Cols = ( Name => 'read', - Description => 'read', - ExecModule => 'read', - Argument => 'read', - Creator => 'read/auto', - Created => 'read/auto', - LastUpdatedBy => 'read/auto', - LastUpdated => 'read/auto' - ); + my %Cols = ( + Name => 'read', + Description => 'read', + ExecModule => 'read', + Argument => 'read', + Creator => 'read/auto', + Created => 'read/auto', + LastUpdatedBy => 'read/auto', + LastUpdated => 'read/auto' + ); return($self->SUPER::_Accessible(@_, %Cols)); } +=head1 METHODS + =head2 Create -Takes a hash. Creates a new Action entry. should be better -documented. +Takes a hash. Creates a new Action entry. =cut @@ -110,7 +103,6 @@ sub Create { sub Delete { my $self = shift; - return (0, "ScripAction->Delete not implemented"); } @@ -126,78 +118,86 @@ Returns: Id, Error Message sub Load { my $self = shift; my $identifier = shift; - + if (!$identifier) { - return (0, $self->loc('Input error')); - } - + return wantarray ? (0, $self->loc('Input error')) : 0; + } + my ($ok, $msg); if ($identifier !~ /\D/) { - ($ok, $msg) = $self->SUPER::Load($identifier); + ($ok, $msg) = $self->SUPER::Load($identifier); } else { - ($ok, $msg) = $self->LoadByCol('Name', $identifier); - + ($ok, $msg) = $self->LoadByCol('Name', $identifier); } if (@_) { - # Set the template Id to the passed in template - my $template = shift; - - $self->{'Template'} = $template; + RT->Deprecated( + Arguments => "Template as second argument", + Remove => "4.4", + ); + $self->{'Template'} = shift; } - return ($ok, $msg); + return wantarray ? ($ok, $msg) : $ok; } =head2 LoadAction HASH - Takes a hash consisting of TicketObj and TransactionObj. Loads an RT::Action:: module. +Takes a hash consisting of TicketObj and TransactionObj. Loads an RT::Action:: module. =cut sub LoadAction { my $self = shift; - my %args = ( TransactionObj => undef, - TicketObj => undef, - @_ ); + my %args = ( + TransactionObj => undef, + TicketObj => undef, + ScripObj => undef, + @_ + ); + + # XXX: this whole block goes with TemplateObj method + unless ( @_ && exists $args{'TemplateObj'} ) { + local $self->{_TicketObj} = $args{TicketObj}; + $args{'TemplateObj'} = $self->TemplateObj; + } + else { + $self->{'TemplateObj'} = $args{'TemplateObj'}; + } - $self->{_TicketObj} = $args{TicketObj}; - - #TODO: Put this in an eval $self->ExecModule =~ /^(\w+)$/; my $module = $1; my $type = "RT::Action::". $module; - - eval "require $type" || die "Require of $type failed.\n$@\n"; - - $self->{'Action'} = $type->new ( Argument => $self->Argument, - CurrentUser => $self->CurrentUser, - ScripActionObj => $self, - ScripObj => $args{'ScripObj'}, - TemplateObj => $self->TemplateObj, - TicketObj => $args{'TicketObj'}, - TransactionObj => $args{'TransactionObj'}, - ); -} + $type->require or die "Require of $type action module failed.\n$@\n"; -=head2 TemplateObj + return $self->{'Action'} = $type->new( + %args, + Argument => $self->Argument, + CurrentUser => $self->CurrentUser, + ScripActionObj => $self, + ); +} -Return this action's template object -TODO: Why are we not using the Scrip's template object? +=head2 TemplateObj +Return this action's template object. Deprecated. =cut sub TemplateObj { my $self = shift; - return undef unless $self->{Template}; + RT->Deprecated( + Remove => "4.4", + ); + if ( !$self->{'TemplateObj'} ) { + return undef unless $self->{Template}; $self->{'TemplateObj'} = RT::Template->new( $self->CurrentUser ); - $self->{'TemplateObj'}->LoadById( $self->{'Template'} ); + $self->{'TemplateObj'}->Load( $self->{'Template'} ); if ( ( $self->{'TemplateObj'}->__Value('Queue') == 0 ) && $self->{'_TicketObj'} ) { @@ -217,27 +217,20 @@ sub TemplateObj { return ( $self->{'TemplateObj'} ); } -# The following methods call the action object - - sub Prepare { my $self = shift; $self->{_Message_ID} = 0; - return ($self->Action->Prepare()); - + return $self->Action->Prepare( @_ ); } sub Commit { my $self = shift; - return($self->Action->Commit()); - - + return $self->Action->Commit( @_ ); } sub Describe { my $self = shift; - return ($self->Action->Describe()); - + return $self->Action->Describe( @_ ); } =head2 Action @@ -248,169 +241,142 @@ Return the actual RT::Action object for this scrip. sub Action { my $self = shift; - return ($self->{'Action'}); -} - -sub DESTROY { - my $self=shift; - $self->{'_TicketObj'} = undef; - $self->{'Action'} = undef; - $self->{'TemplateObj'} = undef; + return $self->{'Action'}; } -=head2 TODO - -Between this, RT::Scrip and RT::Action::*, we need to be able to get rid of a -class. This just reeks of too much complexity -- jesse - -=cut - - - - =head2 id Returns the current value of id. (In the database, id is stored as int(11).) -=cut - - =head2 Name Returns the current value of Name. (In the database, Name is stored as varchar(200).) - - =head2 SetName VALUE - Set Name to VALUE. Returns (1, 'Status message') on success and (0, 'Error Message') on failure. (In the database, Name will be stored as a varchar(200).) -=cut - - =head2 Description Returns the current value of Description. (In the database, Description is stored as varchar(255).) - - =head2 SetDescription VALUE - Set Description to VALUE. Returns (1, 'Status message') on success and (0, 'Error Message') on failure. (In the database, Description will be stored as a varchar(255).) -=cut - - =head2 ExecModule Returns the current value of ExecModule. (In the database, ExecModule is stored as varchar(60).) - - =head2 SetExecModule VALUE - Set ExecModule to VALUE. Returns (1, 'Status message') on success and (0, 'Error Message') on failure. (In the database, ExecModule will be stored as a varchar(60).) -=cut - - =head2 Argument Returns the current value of Argument. (In the database, Argument is stored as varbinary(255).) - - =head2 SetArgument VALUE - Set Argument to VALUE. Returns (1, 'Status message') on success and (0, 'Error Message') on failure. (In the database, Argument will be stored as a varbinary(255).) -=cut - - =head2 Creator Returns the current value of Creator. (In the database, Creator is stored as int(11).) - -=cut - - =head2 Created Returns the current value of Created. (In the database, Created is stored as datetime.) - -=cut - - =head2 LastUpdatedBy Returns the current value of LastUpdatedBy. (In the database, LastUpdatedBy is stored as int(11).) - -=cut - - =head2 LastUpdated Returns the current value of LastUpdated. (In the database, LastUpdated is stored as datetime.) - =cut - sub _CoreAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, Name => - {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => ''}, + {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => ''}, Description => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, ExecModule => - {read => 1, write => 1, sql_type => 12, length => 60, is_blob => 0, is_numeric => 0, type => 'varchar(60)', default => ''}, + {read => 1, write => 1, sql_type => 12, length => 60, is_blob => 0, is_numeric => 0, type => 'varchar(60)', default => ''}, Argument => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varbinary(255)', default => ''}, + {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varbinary(255)', default => ''}, Creator => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, Created => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, LastUpdatedBy => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, LastUpdated => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, } }; +sub PreInflate { + my $class = shift; + my ($importer, $uid, $data) = @_; + + $class->SUPER::PreInflate( $importer, $uid, $data ); + + return not $importer->SkipBy( "Name", $class, $uid, $data ); +} + +sub __DependsOn { + my $self = shift; + my %args = ( + Shredder => undef, + Dependencies => undef, + @_, + ); + my $deps = $args{'Dependencies'}; + +# Scrips + my $objs = RT::Scrips->new( $self->CurrentUser ); + $objs->Limit( FIELD => 'ScripAction', VALUE => $self->Id ); + $deps->_PushDependencies( + BaseObject => $self, + Flags => RT::Shredder::Constants::DEPENDS_ON, + TargetObjects => $objs, + Shredder => $args{'Shredder'} + ); + + return $self->SUPER::__DependsOn( %args ); +} + RT::Base->_ImportOverlays(); 1;