Upgrade to 4.0.10.
[usit-rt.git] / lib / RT / Action.pm
CommitLineData
84fb5b46
MKG
1# BEGIN BPS TAGGED BLOCK {{{
2#
3# COPYRIGHT:
4#
403d7b0b 5# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
84fb5b46
MKG
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
64package RT::Action;
65
66use strict;
67use warnings;
68use Scalar::Util;
69
70use base qw/RT::Base/;
71
72sub 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
81sub _Init {
82 my $self = shift;
83 my %args = ( Argument => undef,
84 CurrentUser => undef,
85 ScripActionObj => undef,
86 ScripObj => undef,
87 TemplateObj => undef,
88 TicketObj => undef,
89 TransactionObj => undef,
90 Type => undef,
91
92 @_ );
93
94 $self->{'Argument'} = $args{'Argument'};
95 $self->CurrentUser( $args{'CurrentUser'});
96 $self->{'ScripActionObj'} = $args{'ScripActionObj'};
97 $self->{'ScripObj'} = $args{'ScripObj'};
98 $self->{'TemplateObj'} = $args{'TemplateObj'};
99 $self->{'TicketObj'} = $args{'TicketObj'};
100 $self->{'TransactionObj'} = $args{'TransactionObj'};
101 $self->{'Type'} = $args{'Type'};
102
103 Scalar::Util::weaken($self->{'ScripActionObj'});
104 Scalar::Util::weaken($self->{'ScripObj'});
105 Scalar::Util::weaken($self->{'TemplateObj'});
106 Scalar::Util::weaken($self->{'TicketObj'});
107 Scalar::Util::weaken($self->{'TransactionObj'});
108
109}
110
111# Access Scripwide data
112
113sub Argument {
114 my $self = shift;
115 return($self->{'Argument'});
116}
117
118sub TicketObj {
119 my $self = shift;
120 return($self->{'TicketObj'});
121}
122
123sub TransactionObj {
124 my $self = shift;
125 return($self->{'TransactionObj'});
126}
127
128sub TemplateObj {
129 my $self = shift;
130 return($self->{'TemplateObj'});
131}
132
133sub ScripObj {
134 my $self = shift;
135 return($self->{'ScripObj'});
136}
137
138sub ScripActionObj {
139 my $self = shift;
140 return($self->{'ScripActionObj'});
141}
142
143sub Type {
144 my $self = shift;
145 return($self->{'Type'});
146}
147
148
149# Scrip methods
150
151#Do what we need to do and send it out.
152
153sub Commit {
154 my $self = shift;
155 return(0, $self->loc("Commit Stubbed"));
156}
157
158
159#What does this type of Action does
160
161sub Describe {
162 my $self = shift;
163 return $self->loc("No description for [_1]", ref $self);
164}
165
166
167#Parse the templates, get things ready to go.
168
169sub Prepare {
170 my $self = shift;
171 return (0, $self->loc("Prepare Stubbed"));
172}
173
174
175#If this rule applies to this transaction, return true.
176
177sub IsApplicable {
178 my $self = shift;
179 return(undef);
180}
181
182sub DESTROY {
183 my $self = shift;
184
185 # We need to clean up all the references that might maybe get
186 # oddly circular
187 $self->{'ScripActionObj'} = undef;
188 $self->{'ScripObj'} = undef;
189 $self->{'TemplateObj'} =undef
190 $self->{'TicketObj'} = undef;
191 $self->{'TransactionObj'} = undef;
192}
193
194
195RT::Base->_ImportOverlays();
196
1971;