summaryrefslogtreecommitdiff
path: root/rt/lib/RT/Scrip.pm
diff options
context:
space:
mode:
Diffstat (limited to 'rt/lib/RT/Scrip.pm')
-rwxr-xr-xrt/lib/RT/Scrip.pm654
1 files changed, 391 insertions, 263 deletions
diff --git a/rt/lib/RT/Scrip.pm b/rt/lib/RT/Scrip.pm
index aef011c..a69dde0 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 <jesse@bestpractical.com>
+#
+# (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 <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
+=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;