Skip to content

Commit 2e9e23f

Browse files
committed
Add RT::Action::ForwardTransaction
Add an action to be used from rt-crontool for forwarding transactions to a specified email, optionally with some comment for the forward transaction.
1 parent cf34cad commit 2e9e23f

File tree

1 file changed

+123
-0
lines changed

1 file changed

+123
-0
lines changed
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# BEGIN BPS TAGGED BLOCK {{{
2+
#
3+
# COPYRIGHT:
4+
#
5+
# This software is Copyright (c) 1996-2023 Best Practical Solutions, LLC
6+
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::ForwardTransaction
52+
53+
=head1 DESCRIPTION
54+
55+
ForwardTransaction is a ScripAction which is meant to be called from
56+
rt-crontool. (see C<rt-crontool -h> for more details)
57+
58+
ForwardTransaction allows forwarding of a ticket transaction to the
59+
specified email, optionally with some content to use as the content of
60+
the forward transaction that is added to the ticket.
61+
62+
To use with C<rt-crontool>, specify the email and content with
63+
C<--action-arg>:
64+
65+
--action RT::Action::ForwardTransaction
66+
--action-arg "[email protected]|Content of the forward transaction"
67+
68+
=cut
69+
70+
package RT::Action::ForwardTransaction;
71+
use base 'RT::Action';
72+
73+
use strict;
74+
use warnings;
75+
76+
sub Describe {
77+
my $self = shift;
78+
return (ref $self . " will forward a ticket transaction to the email provided as the Argument.");
79+
}
80+
81+
sub Prepare {
82+
my $self = shift;
83+
84+
my $arg = $self->Argument || '';
85+
my ( $to, $content ) = split /\|/, $arg;
86+
87+
$self->{_to} = $to;
88+
$self->{_content} = $content
89+
if $content;
90+
91+
if ( $to ) {
92+
return 1;
93+
}
94+
else {
95+
RT->Logger->warning('No email argument for RT::Action::ForwardTransaction');
96+
return;
97+
}
98+
}
99+
100+
sub Commit {
101+
my $self = shift;
102+
103+
my $ticket = $self->TicketObj;
104+
my $txn = $self->TransactionObj;
105+
106+
my %args = (
107+
Transaction => $txn,
108+
To => $self->{_to},
109+
);
110+
$args{Content} = $self->{_content}
111+
if $self->{_content};
112+
113+
my ( $ret, $msg ) = $ticket->Forward(%args);
114+
115+
RT->Logger->warning("Failed to Forward Transaction: $msg")
116+
unless $ret;
117+
118+
return $ret;
119+
}
120+
121+
RT::Base->_ImportOverlays();
122+
123+
1;

0 commit comments

Comments
 (0)