use warnings;
use strict;
no warnings qw/redefine/;
package RT::Extension::BrandedQueues;
our $VERSION = '0.1';
use RT::Interface::Email;
package RT::Interface::Email;
sub ParseTicketId {
my $Subject = shift;
my $id;
my $test_name = $RT::EmailSubjectTagRegex || qr/\Q$RT::rtname\E/i;
if ( $Subject =~ s/\[$test_name\s+\#(\d+)\s*\]//i ) {
my $id = $1;
$RT::Logger->debug("Found a ticket ID. It's $id");
return ($id);
}
else {
my $queues = RT::Queues->new($RT::SystemUser);
$queues->UnLimit();
while (my $queue = $queues->Next) {
my $tag_attr = $queue->FirstAttribute('BrandedSubjectTag');
next unless ($tag_attr);
my $tag = $tag_attr->Content;
next unless ($tag);
my $test_name =qr/\Q$tag\E/i;
if ( $Subject =~ s/\[$test_name\s+\#(\d+)\s*\]//i ) {
my $id = $1;
$RT::Logger->debug("Found a ticket ID. It's $id");
return ($id);
}
}
# no tag for real.
return (undef);
}
}
use RT::EmailParser;
package RT::EmailParser;
# In 3.2, we used EmailParser's ParseTicketId;
sub ParseTicketId {
my $self = shift;
RT::Interface::Email::ParseTicketId(@_);
}
use RT::Queue;
package RT::Queue;
sub Tag {
my $self = shift;
my $tag_attr = $self->FirstAttribute('BrandedSubjectTag');
return ($RT::rtname) unless ($tag_attr);
my $tag = $tag_attr->Content || $RT::rtname;
return $tag;
}
use RT::Action::SendEmail;
package RT::Action::SendEmail;
sub SetSubjectToken {
my $self = shift;
my $tag = "[".$self->TicketObj->QueueObj->Tag ." #" . $self->TicketObj->id . "]";
my $sub = $self->TemplateObj->MIMEObj->head->get('Subject');
unless ( $sub =~ /\Q$tag\E/ ) {
$sub =~ s/(\r\n|\n|\s)/ /gi;
chomp $sub;
$self->TemplateObj->MIMEObj->head->replace( 'Subject', "$tag $sub" );
}
}
1;