X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Flib%2FRT%2FAction%2FExtractSubjectTag.pm;h=92a72148f4e6a9dbf38a879fc891e6cd886d74fc;hp=7121c13279c71a86ddf12b4806f3cf7b8ab0f46e;hb=e9e0cf0989259b94d9758eceff448666a2e5a5cc;hpb=b5c4237a34aef94976bc343c8d9e138664fc3984 diff --git a/rt/lib/RT/Action/ExtractSubjectTag.pm b/rt/lib/RT/Action/ExtractSubjectTag.pm index 7121c1327..92a72148f 100644 --- a/rt/lib/RT/Action/ExtractSubjectTag.pm +++ b/rt/lib/RT/Action/ExtractSubjectTag.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC # # # (Except where explicitly superseded by other copyright notices) @@ -46,9 +46,48 @@ # # END BPS TAGGED BLOCK }}} +=head1 NAME + + RT::Action::ExtractSubjectTag + +=head1 DESCRIPTION + +ExtractSubjectTag is a ScripAction which allows ticket bonding between +two RT instances or between RT and other Ticket systems like Siebel +or Remedy. + +By default this ScripAction is set up to run on every transaction on +every Correspondence. + +One can configure this ScripActions behaviour by changing the +global C<$ExtractSubjectTagMatch> in C. + +If a transaction's subject matches this regexp, we append the match +tag to the ticket's current subject. This helps ensure that +further communication on the ticket will include the remote +system's subject tag. + +If you modify this code, be careful not to remove the code where it +ensures that it only examines remote systems' tags. + +=head1 EXAMPLE + +As an example, Siebel will set their subject tag to something +like: + + B<[SR ID:1-554]> + +To record this tag in the local ticket's subject, we need to change +ExtractSubjectTagMatch to something like: + + Set($ExtractSubjectTagMatch, qr/\[[^\]]+[#:][0-9-]+\]/); + +=cut + package RT::Action::ExtractSubjectTag; use base 'RT::Action'; use strict; +use warnings; sub Describe { my $self = shift; @@ -63,13 +102,15 @@ sub Commit { my $self = shift; my $Transaction = $self->TransactionObj; my $FirstAttachment = $Transaction->Attachments->First; - return 1 unless ($FirstAttachment); + return 1 unless $FirstAttachment; + + my $TransactionSubject = $FirstAttachment->Subject; + return 1 unless $TransactionSubject; my $Ticket = $self->TicketObj; my $TicketSubject = $self->TicketObj->Subject; my $origTicketSubject = $TicketSubject; - my $TransactionSubject = $FirstAttachment->Subject; my $match = RT->Config->Get('ExtractSubjectTagMatch'); my $nomatch = RT->Config->Get('ExtractSubjectTagNoMatch');