import rt 3.8.10
[freeside.git] / rt / lib / RT / Action.pm
1 # BEGIN BPS TAGGED BLOCK {{{
2 #
3 # COPYRIGHT:
4 #
5 # This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
6 #                                          <sales@bestpractical.com>
7 #
8 # (Except where explicitly superseded by other copyright notices)
9 #
10 #
11 # LICENSE:
12 #
13 # This work is made available to you under the terms of Version 2 of
14 # the GNU General Public License. A copy of that license should have
15 # been provided with this software, but in any event can be snarfed
16 # from www.gnu.org.
17 #
18 # This work is distributed in the hope that it will be useful, but
19 # WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21 # General Public License for more details.
22 #
23 # You should have received a copy of the GNU General Public License
24 # along with this program; if not, write to the Free Software
25 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
26 # 02110-1301 or visit their web page on the internet at
27 # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
28 #
29 #
30 # CONTRIBUTION SUBMISSION POLICY:
31 #
32 # (The following paragraph is not intended to limit the rights granted
33 # to you to modify and distribute this software under the terms of
34 # the GNU General Public License and is only of importance to you if
35 # you choose to contribute your changes and enhancements to the
36 # community by submitting them to Best Practical Solutions, LLC.)
37 #
38 # By intentionally submitting any modifications, corrections or
39 # derivatives to this work, or any other work intended for use with
40 # Request Tracker, to Best Practical Solutions, LLC, you confirm that
41 # you are the copyright holder for those contributions and you grant
42 # Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
43 # royalty-free, perpetual, license to use, copy, create derivative
44 # works based on those contributions, and sublicense and distribute
45 # those contributions and any derivatives thereof.
46 #
47 # END BPS TAGGED BLOCK }}}
48
49 =head1 NAME
50
51   RT::Action - a generic baseclass for RT Actions
52
53 =head1 SYNOPSIS
54
55   use RT::Action;
56
57 =head1 DESCRIPTION
58
59 =head1 METHODS
60
61
62 =cut
63
64 package RT::Action;
65
66 use strict;
67 use Scalar::Util;
68
69 use base qw/RT::Base/;
70
71 # {{{ sub new 
72 sub new  {
73   my $proto = shift;
74   my $class = ref($proto) || $proto;
75   my $self  = {};
76   bless ($self, $class);
77   $self->_Init(@_);
78   return $self;
79 }
80 # }}}
81
82 # {{{ sub _Init 
83 sub _Init  {
84   my $self = shift;
85   my %args = ( Argument => undef,
86                CurrentUser => undef,
87                ScripActionObj => undef,
88                ScripObj => undef,
89                TemplateObj => undef,
90                TicketObj => undef,
91                TransactionObj => undef,
92                Type => undef,
93
94                @_ );
95
96   $self->{'Argument'} = $args{'Argument'};
97   $self->CurrentUser( $args{'CurrentUser'});
98   $self->{'ScripActionObj'} = $args{'ScripActionObj'};
99   $self->{'ScripObj'} = $args{'ScripObj'};
100   $self->{'TemplateObj'} = $args{'TemplateObj'};
101   $self->{'TicketObj'} = $args{'TicketObj'};
102   $self->{'TransactionObj'} = $args{'TransactionObj'};
103   $self->{'Type'} = $args{'Type'};
104
105   Scalar::Util::weaken($self->{'ScripActionObj'});
106   Scalar::Util::weaken($self->{'ScripObj'});
107   Scalar::Util::weaken($self->{'TemplateObj'});
108   Scalar::Util::weaken($self->{'TicketObj'});
109   Scalar::Util::weaken($self->{'TransactionObj'});
110
111 }
112 # }}}
113
114 # Access Scripwide data
115
116 # {{{ sub Argument 
117 sub Argument  {
118   my $self = shift;
119   return($self->{'Argument'});
120 }
121 # }}}
122
123 # {{{ sub TicketObj
124 sub TicketObj  {
125   my $self = shift;
126   return($self->{'TicketObj'});
127 }
128 # }}}
129
130 # {{{ sub TransactionObj
131 sub TransactionObj  {
132   my $self = shift;
133   return($self->{'TransactionObj'});
134 }
135 # }}}
136
137 # {{{ sub TemplateObj
138 sub TemplateObj  {
139   my $self = shift;
140   return($self->{'TemplateObj'});
141 }
142 # }}}
143
144 # {{{ sub ScripObj
145 sub ScripObj  {
146   my $self = shift;
147   return($self->{'ScripObj'});
148 }
149 # }}}
150
151 # {{{ sub ScripActionObj
152 sub ScripActionObj  {
153   my $self = shift;
154   return($self->{'ScripActionObj'});
155 }
156 # }}}
157
158 # {{{ sub Type
159 sub Type  {
160   my $self = shift;
161   return($self->{'Type'});
162 }
163 # }}}
164
165
166 # Scrip methods
167
168 #Do what we need to do and send it out.
169
170 # {{{ sub Commit 
171 sub Commit  {
172   my $self = shift;
173   return(0, $self->loc("Commit Stubbed"));
174 }
175 # }}}
176
177
178 #What does this type of Action does
179
180 # {{{ sub Describe 
181 sub Describe  {
182   my $self = shift;
183   return $self->loc("No description for [_1]", ref $self);
184 }
185 # }}}
186
187
188 #Parse the templates, get things ready to go.
189
190 # {{{ sub Prepare 
191 sub Prepare  {
192   my $self = shift;
193   return (0, $self->loc("Prepare Stubbed"));
194 }
195 # }}}
196
197
198 #If this rule applies to this transaction, return true.
199
200 # {{{ sub IsApplicable 
201 sub IsApplicable  {
202   my $self = shift;
203   return(undef);
204 }
205 # }}}
206
207 # {{{ sub DESTROY
208 sub DESTROY {
209     my $self = shift;
210
211     # We need to clean up all the references that might maybe get
212     # oddly circular
213     $self->{'ScripActionObj'} = undef;
214     $self->{'ScripObj'} = undef;
215     $self->{'TemplateObj'} =undef
216     $self->{'TicketObj'} = undef;
217     $self->{'TransactionObj'} = undef;
218 }
219
220 # }}}
221
222 RT::Base->_ImportOverlays();
223
224 1;