reverting to vendor branch rt 3.0.4, hopefully
[freeside.git] / rt / lib / RT / Scrip.pm
index aef011c..a69dde0 100755 (executable)
-#$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;