X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Flib%2FRT%2FScrip.pm;h=a69dde04e704ba4b9d9f0792b2d96e200795b895;hp=aef011ca3cd750cb7bd872de15ffa5a828234e21;hb=ded0451e9582df33cae6099a2fb72b4ea25076cf;hpb=0ebeec96313dd7edfca340f01f8fbbbac1f4aa1d diff --git a/rt/lib/RT/Scrip.pm b/rt/lib/RT/Scrip.pm index aef011ca3..a69dde04e 100755 --- a/rt/lib/RT/Scrip.pm +++ b/rt/lib/RT/Scrip.pm @@ -1,372 +1,500 @@ -#$Header: /home/cvs/cvsroot/freeside/rt/lib/RT/Scrip.pm,v 1.1 2002-08-12 06:17:07 ivan Exp $ +# BEGIN LICENSE BLOCK +# +# Copyright (c) 1996-2003 Jesse Vincent +# +# (Except where explictly superceded by other copyright notices) +# +# 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. +# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. +# +# +# END LICENSE BLOCK +# Autogenerated by DBIx::SearchBuilder factory (by ) +# WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. +# +# !! DO NOT EDIT THIS FILE !! +# + +use strict; + =head1 NAME - RT::Scrip - an RT Scrip object +RT::Scrip -=head1 SYNOPSIS - use RT::Scrip; +=head1 SYNOPSIS =head1 DESCRIPTION - =head1 METHODS -=begin testing +=cut -ok (require RT::TestHarness); -ok (require RT::Scrip); +package RT::Scrip; +use RT::Record; +use RT::Queue; +use RT::Template; +use RT::ScripCondition; +use RT::ScripAction; -=end testing -=cut +use vars qw( @ISA ); +@ISA= qw( RT::Record ); -package RT::Scrip; -use RT::Record; -@ISA= qw(RT::Record); +sub _Init { + my $self = shift; -# {{{ sub _Init -sub _Init { - my $self = shift; - $self->{'table'} = "Scrips"; - return ($self->SUPER::_Init(@_)); + $self->Table('Scrips'); + $self->SUPER::_Init(@_); } -# }}} -# {{{ sub _Accessible -sub _Accessible { - my $self = shift; - my %Cols = ( ScripAction => 'read/write', - ScripCondition => 'read/write', - Stage => 'read/write', - Queue => 'read/write', - Template => 'read/write', - ); - return($self->SUPER::_Accessible(@_, %Cols)); -} -# }}} -# {{{ sub Create -=head2 Create -Creates a new entry in the Scrips table. Takes a paramhash with the attributes: - Queue A queue id or 0 for a global scrip - Template A template ID or name. - Behavior is undefined if you have multiple items with - the same name - ScripAction A ScripAction id or name - Behavior is undefined if you have multiple items with - the same name - ScripCondition A ScripCondition id or name - Behavior is undefined if you have multiple items with - the same name +=item Create PARAMHASH -Returns (retval, msg); -retval is 0 for failure or scrip id. msg is a textual description of what happened. +Create takes a hash of values and creates a row in the database: + + varchar(255) 'Description'. + int(11) 'ScripCondition'. + int(11) 'ScripAction'. + text 'ConditionRules'. + text 'ActionRules'. + text 'CustomIsApplicableCode'. + text 'CustomPrepareCode'. + text 'CustomCommitCode'. + varchar(32) 'Stage'. + int(11) 'Queue'. + int(11) 'Template'. =cut -sub Create { + + + +sub Create { my $self = shift; - my %args = ( Queue => undef, - Template => undef, - ScripAction => undef, - ScripCondition => undef, - Stage => 'TransactionCreate', - @_ - ); - - - if ($args{'Queue'} == 0 ) { - unless ($self->CurrentUser->HasSystemRight('ModifyScrips')) { - return (0, 'Permission Denied'); - } - } - else { - my $QueueObj = new RT::Queue($self->CurrentUser); - $QueueObj->Load($args{'Queue'}); - unless ($QueueObj->id()) { - return (0,'Invalid queue'); - } - unless ($QueueObj->CurrentUserHasRight('ModifyScrips')) { - return (0, 'Permssion Denied'); - } - } - - #TODO +++ validate input - - require RT::ScripAction; - my $action = new RT::ScripAction($self->CurrentUser); - $action->Load($args{'ScripAction'}); - return (0, "Action ".$args{'ScripAction'}." not found") unless $action->Id; - - require RT::Template; - my $template = new RT::Template($self->CurrentUser); - $template->Load($args{'Template'}); - return (0, 'Template not found') unless $template->Id; - - require RT::ScripCondition; - my $condition = new RT::ScripCondition($self->CurrentUser); - $condition->Load($args{'ScripCondition'}); - - unless ($condition->Id) { - return (0, 'Condition not found'); - } - - my $id = $self->SUPER::Create(Queue => $args{'Queue'}, - Template => $template->Id, - ScripCondition => $condition->id, - Stage => $args{'Stage'}, - ScripAction => $action->Id - ); - return ($id, 'Scrip Created'); + my %args = ( + Description => '', + ScripCondition => '0', + ScripAction => '0', + ConditionRules => '', + ActionRules => '', + CustomIsApplicableCode => '', + CustomPrepareCode => '', + CustomCommitCode => '', + Stage => '', + Queue => '0', + Template => '0', + + @_); + $self->SUPER::Create( + Description => $args{'Description'}, + ScripCondition => $args{'ScripCondition'}, + ScripAction => $args{'ScripAction'}, + ConditionRules => $args{'ConditionRules'}, + ActionRules => $args{'ActionRules'}, + CustomIsApplicableCode => $args{'CustomIsApplicableCode'}, + CustomPrepareCode => $args{'CustomPrepareCode'}, + CustomCommitCode => $args{'CustomCommitCode'}, + Stage => $args{'Stage'}, + Queue => $args{'Queue'}, + Template => $args{'Template'}, +); + } -# }}} -# {{{ sub Delete -=head2 Delete +=item id + +Returns the current value of id. +(In the database, id is stored as int(11).) -Delete this object =cut -sub Delete { - my $self = shift; - - unless ($self->CurrentUserHasRight('ModifyScrips')) { - return (0, 'Permission Denied'); - } - - return ($self->SUPER::Delete(@_)); -} -# }}} -# {{{ sub QueueObj +=item Description + +Returns the current value of Description. +(In the database, Description is stored as varchar(255).) + -=head2 QueueObj -Retuns an RT::Queue object with this Scrip\'s queue +=item 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 -sub QueueObj { - my $self = shift; - - if (!$self->{'QueueObj'}) { - require RT::Queue; - $self->{'QueueObj'} = RT::Queue->new($self->CurrentUser); - $self->{'QueueObj'}->Load($self->Queue); - } - return ($self->{'QueueObj'}); -} -# }}} +=item ScripCondition + +Returns the current value of ScripCondition. +(In the database, ScripCondition is stored as int(11).) + -# {{{ sub ActionObj +=item SetScripCondition VALUE -=head2 ActionObj -Retuns an RT::Action object with this Scrip\'s Action +Set ScripCondition to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, ScripCondition will be stored as a int(11).) + =cut -sub ActionObj { - my $self = shift; - - unless (defined $self->{'ScripActionObj'}) { - require RT::ScripAction; - - $self->{'ScripActionObj'} = RT::ScripAction->new($self->CurrentUser); - #TODO: why are we loading Actions with templates like this. - # two seperate methods might make more sense - $self->{'ScripActionObj'}->Load($self->ScripAction, $self->Template); - } - return ($self->{'ScripActionObj'}); + +=item ScripConditionObj + +Returns the ScripCondition Object which has the id returned by ScripCondition + + +=cut + +sub ScripConditionObj { + my $self = shift; + my $ScripCondition = RT::ScripCondition->new($self->CurrentUser); + $ScripCondition->Load($self->__Value('ScripCondition')); + return($ScripCondition); } -# }}} +=item ScripAction + +Returns the current value of ScripAction. +(In the database, ScripAction is stored as int(11).) + + + +=item SetScripAction VALUE -# {{{ sub TemplateObj -=head2 TemplateObj +Set ScripAction to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, ScripAction will be stored as a int(11).) -Retuns an RT::Template object with this Scrip\'s Template =cut -sub TemplateObj { - my $self = shift; - - unless (defined $self->{'TemplateObj'}) { - require RT::Template; - $self->{'TemplateObj'} = RT::Template->new($self->CurrentUser); - $self->{'TemplateObj'}->Load($self->Template); - } - return ($self->{'TemplateObj'}); -} -# }}} +=item ScripActionObj -# {{{ sub Prepare -=head2 Prepare +Returns the ScripAction Object which has the id returned by ScripAction -Calls the action object's prepare method =cut -sub Prepare { - my $self = shift; - $self->ActionObj->Prepare(@_); +sub ScripActionObj { + my $self = shift; + my $ScripAction = RT::ScripAction->new($self->CurrentUser); + $ScripAction->Load($self->__Value('ScripAction')); + return($ScripAction); } -# }}} +=item ConditionRules + +Returns the current value of ConditionRules. +(In the database, ConditionRules is stored as text.) + -# {{{ sub Commit -=head2 Commit -Calls the action object's commit method +=item SetConditionRules VALUE + + +Set ConditionRules to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, ConditionRules will be stored as a text.) + =cut -sub Commit { - my $self = shift; - $self->ActionObj->Commit(@_); -} -# }}} +=item ActionRules -# {{{ sub ConditionObj +Returns the current value of ActionRules. +(In the database, ActionRules is stored as text.) -=head2 ConditionObj -Retuns an RT::ScripCondition object with this Scrip's IsApplicable + +=item SetActionRules VALUE + + +Set ActionRules to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, ActionRules will be stored as a text.) + =cut -sub ConditionObj { - my $self = shift; - - unless (defined $self->{'ScripConditionObj'}) { - require RT::ScripCondition; - $self->{'ScripConditionObj'} = RT::ScripCondition->new($self->CurrentUser); - $self->{'ScripConditionObj'}->Load($self->ScripCondition); - } - return ($self->{'ScripConditionObj'}); -} -# }}} +=item CustomIsApplicableCode + +Returns the current value of CustomIsApplicableCode. +(In the database, CustomIsApplicableCode is stored as text.) + + + +=item SetCustomIsApplicableCode VALUE -# {{{ sub IsApplicable -=head2 IsApplicable +Set CustomIsApplicableCode to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, CustomIsApplicableCode will be stored as a text.) -Calls the Condition object\'s IsApplicable method =cut -sub IsApplicable { - my $self = shift; - return ($self->ConditionObj->IsApplicable(@_)); -} -# }}} +=item CustomPrepareCode -# {{{ sub DESTROY -sub DESTROY { - my $self = shift; - $self->{'ActionObj'} = undef; -} -# }}} +Returns the current value of CustomPrepareCode. +(In the database, CustomPrepareCode is stored as text.) -# {{{ ACL related methods -# {{{ sub _Set -# does an acl check and then passes off the call -sub _Set { - my $self = shift; - - unless ($self->CurrentUserHasRight('ModifyScrips')) { - $RT::Logger->debug("CurrentUser can't modify Scrips for ".$self->Queue."\n"); - return (0, 'Permission Denied'); - } - return $self->__Set(@_); -} +=item SetCustomPrepareCode VALUE -# }}} -# {{{ sub _Value -# does an acl check and then passes off the call -sub _Value { - my $self = shift; - - unless ($self->CurrentUserHasRight('ShowScrips')) { - $RT::Logger->debug("CurrentUser can't modify Scrips for ".$self->__Value('Queue')."\n"); - return (undef); - } - - return $self->__Value(@_); -} -# }}} +Set CustomPrepareCode to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, CustomPrepareCode will be stored as a text.) + + +=cut + + +=item CustomCommitCode + +Returns the current value of CustomCommitCode. +(In the database, CustomCommitCode is stored as text.) + -# {{{ sub CurrentUserHasRight -=head2 CurrentUserHasRight +=item SetCustomCommitCode VALUE + + +Set CustomCommitCode to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, CustomCommitCode will be stored as a text.) -Helper menthod for HasRight. Presets Principal to CurrentUser then -calls HasRight. =cut -sub CurrentUserHasRight { - my $self = shift; - my $right = shift; - return ($self->HasRight( Principal => $self->CurrentUser->UserObj, - Right => $right )); - + +=item Stage + +Returns the current value of Stage. +(In the database, Stage is stored as varchar(32).) + + + +=item SetStage VALUE + + +Set Stage to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Stage will be stored as a varchar(32).) + + +=cut + + +=item Queue + +Returns the current value of Queue. +(In the database, Queue is stored as int(11).) + + + +=item SetQueue VALUE + + +Set Queue to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Queue will be stored as a int(11).) + + +=cut + + +=item QueueObj + +Returns the Queue Object which has the id returned by Queue + + +=cut + +sub QueueObj { + my $self = shift; + my $Queue = RT::Queue->new($self->CurrentUser); + $Queue->Load($self->__Value('Queue')); + return($Queue); } -# }}} +=item Template + +Returns the current value of Template. +(In the database, Template is stored as int(11).) + + + +=item SetTemplate VALUE -# {{{ sub HasRight -=head2 HasRight +Set Template to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Template will be stored as a int(11).) -Takes a param-hash consisting of "Right" and "Principal" Principal is -an RT::User object or an RT::CurrentUser object. "Right" is a textual -Right string that applies to Scrips. =cut -sub HasRight { - my $self = shift; - my %args = ( Right => undef, - Principal => undef, - @_ ); - - if ((defined $self->SUPER::_Value('Queue')) and ($self->SUPER::_Value('Queue') != 0)) { - return ( $args{'Principal'}->HasQueueRight( - Right => $args{'Right'}, - Queue => $self->SUPER::_Value('Queue'), - Principal => $args{'Principal'} - ) - ); - - } - else { - return( $args{'Principal'}->HasSystemRight( $args{'Right'}) ); - } + +=item TemplateObj + +Returns the Template Object which has the id returned by Template + + +=cut + +sub TemplateObj { + my $self = shift; + my $Template = RT::Template->new($self->CurrentUser); + $Template->Load($self->__Value('Template')); + return($Template); } -# }}} -# }}} +=item Creator + +Returns the current value of Creator. +(In the database, Creator is stored as int(11).) + + +=cut + + +=item Created + +Returns the current value of Created. +(In the database, Created is stored as datetime.) + + +=cut + + +=item LastUpdatedBy + +Returns the current value of LastUpdatedBy. +(In the database, LastUpdatedBy is stored as int(11).) + + +=cut + + +=item LastUpdated + +Returns the current value of LastUpdated. +(In the database, LastUpdated is stored as datetime.) + + +=cut -1; +sub _ClassAccessible { + { + + id => + {read => 1, type => 'int(11)', default => ''}, + Description => + {read => 1, write => 1, type => 'varchar(255)', default => ''}, + ScripCondition => + {read => 1, write => 1, type => 'int(11)', default => '0'}, + ScripAction => + {read => 1, write => 1, type => 'int(11)', default => '0'}, + ConditionRules => + {read => 1, write => 1, type => 'text', default => ''}, + ActionRules => + {read => 1, write => 1, type => 'text', default => ''}, + CustomIsApplicableCode => + {read => 1, write => 1, type => 'text', default => ''}, + CustomPrepareCode => + {read => 1, write => 1, type => 'text', default => ''}, + CustomCommitCode => + {read => 1, write => 1, type => 'text', default => ''}, + Stage => + {read => 1, write => 1, type => 'varchar(32)', default => ''}, + Queue => + {read => 1, write => 1, type => 'int(11)', default => '0'}, + Template => + {read => 1, write => 1, type => 'int(11)', default => '0'}, + Creator => + {read => 1, auto => 1, type => 'int(11)', default => '0'}, + Created => + {read => 1, auto => 1, type => 'datetime', default => ''}, + LastUpdatedBy => + {read => 1, auto => 1, type => 'int(11)', default => '0'}, + LastUpdated => + {read => 1, auto => 1, type => 'datetime', default => ''}, + + } +}; + + + eval "require RT::Scrip_Overlay"; + if ($@ && $@ !~ qr{^Can't locate RT/Scrip_Overlay.pm}) { + die $@; + }; + + eval "require RT::Scrip_Vendor"; + if ($@ && $@ !~ qr{^Can't locate RT/Scrip_Vendor.pm}) { + die $@; + }; + + eval "require RT::Scrip_Local"; + if ($@ && $@ !~ qr{^Can't locate RT/Scrip_Local.pm}) { + die $@; + }; + + + + +=head1 SEE ALSO + +This class allows "overlay" methods to be placed +into the following files _Overlay is for a System overlay by the original author, +_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations. + +These overlay files can contain new subs or subs to replace existing subs in this module. + +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line + + no warnings qw(redefine); + +so that perl does not kick and scream when you redefine a subroutine or variable in your overlay. + +RT::Scrip_Overlay, RT::Scrip_Vendor, RT::Scrip_Local + +=cut + + +1;