-#$Header: /home/cvs/cvsroot/freeside/rt/lib/RT/Scrip.pm,v 1.1 2002-08-12 06:17:07 ivan Exp $
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC
+# <jesse@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
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+# 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 }}}
+
+# Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>)
+# 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
+=head2 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
+=head2 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
+=head2 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
+
+=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
-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'});
-}
-# }}}
+=head2 ScripCondition
+
+Returns the current value of ScripCondition.
+(In the database, ScripCondition is stored as int(11).)
+
-# {{{ sub ActionObj
+=head2 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'});
+
+=head2 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);
}
-# }}}
+=head2 ScripAction
+Returns the current value of ScripAction.
+(In the database, ScripAction is stored as int(11).)
+
+
+
+=head2 SetScripAction VALUE
-# {{{ sub TemplateObj
-=head2 TemplateObj
-Retuns an RT::Template object with this Scrip\'s Template
+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).)
+
=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'});
-}
-# }}}
+=head2 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);
}
-# }}}
+=head2 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
+
+=head2 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(@_);
-}
-# }}}
+=head2 ActionRules
+
+Returns the current value of ActionRules.
+(In the database, ActionRules is stored as text.)
+
+
+
+=head2 SetActionRules VALUE
-# {{{ sub ConditionObj
-=head2 ConditionObj
+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.)
-Retuns an 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);
- $self->{'ScripConditionObj'}->Load($self->ScripCondition);
- }
- return ($self->{'ScripConditionObj'});
-}
-# }}}
+=head2 CustomIsApplicableCode
+
+Returns the current value of CustomIsApplicableCode.
+(In the database, CustomIsApplicableCode is stored as text.)
+
+
-# {{{ sub IsApplicable
+=head2 SetCustomIsApplicableCode VALUE
-=head2 IsApplicable
-Calls the Condition object\'s IsApplicable method
+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.)
+
=cut
-sub IsApplicable {
- my $self = shift;
- return ($self->ConditionObj->IsApplicable(@_));
-}
-# }}}
+=head2 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(@_);
-}
+=head2 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.)
-# {{{ sub CurrentUserHasRight
-=head2 CurrentUserHasRight
+=cut
+
+
+=head2 CustomCommitCode
+
+Returns the current value of CustomCommitCode.
+(In the database, CustomCommitCode is stored as text.)
+
+
+
+=head2 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 ));
-
+
+=head2 Stage
+
+Returns the current value of Stage.
+(In the database, Stage is stored as varchar(32).)
+
+
+
+=head2 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
+
+
+=head2 Queue
+
+Returns the current value of Queue.
+(In the database, Queue is stored as int(11).)
+
+
+
+=head2 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
+
+
+=head2 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);
}
-# }}}
+=head2 Template
+
+Returns the current value of Template.
+(In the database, Template is stored as int(11).)
+
+
+
+=head2 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'}) );
- }
+
+=head2 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);
}
-# }}}
-# }}}
+=head2 Creator
-1;
+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 => ''},
+ Description =>
+ {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''},
+ ScripCondition =>
+ {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'},
+ ScripAction =>
+ {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'},
+ ConditionRules =>
+ {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'text', default => ''},
+ ActionRules =>
+ {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'text', default => ''},
+ CustomIsApplicableCode =>
+ {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'text', default => ''},
+ CustomPrepareCode =>
+ {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'text', default => ''},
+ CustomCommitCode =>
+ {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'text', default => ''},
+ Stage =>
+ {read => 1, write => 1, sql_type => 12, length => 32, is_blob => 0, is_numeric => 0, type => 'varchar(32)', default => ''},
+ Queue =>
+ {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'},
+ Template =>
+ {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'},
+ Creator =>
+ {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 => ''},
+ LastUpdatedBy =>
+ {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 => ''},
+
+ }
+};
+
+
+ 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.
+
+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;