Re: Overriding files in lib/RT?

Alex Hall <[email protected]>
Newsgroups gmane.comp.bug-tracking.request-tracker.user
Message-ID <CA+Q8_JfmZ1CDNMkEQa+bGwXeUVcBOOHfi0_rfSOEhWDL694rQQ@mail.gmail.com>
Hi all,
Thanks for the responses, it's partially working. When I use my
Email_Local.pm, the server refuses to start, yet I have no errors. Running
it through Perl's checker reveals only:

Name "RT::Logger" used only once: possible typo at Email_Local.pm at line 31

Perl says everything else is fine. I pulled the single function I wanted to
modify out of the original Email.pm (ParseTicketId) and left it alone,
except for changing \s+ to \s* in the "if (my $@captures" line. As usual,
any errors that might be generated are going who knows where, so I'm not
sure where to start looking. As I said, Perl thinks this is fine save that
warning, but RT definitely doesn't. Any thoughts? Here's the file:


use strict;
use warnings;
no warnings qw(redefine);

package RT::Interface::Email;

#Takes a string and searches for [subjecttag #id]

#Returns the id if a match is found.  Otherwise returns undef.

sub ParseTicketId {
    my $Subject = shift;

    my $rtname = RT->Config->Get('rtname');
    my $test_name = RT->Config->Get('EmailSubjectTagRegex') ||
qr/\Q$rtname\E/i;

    # We use @captures and pull out the last capture value to guard against
    # someone using (...) instead of (?:...) in $EmailSubjectTagRegex.
    my $id;
    if ( my @captures = $Subject =~ /\[$test_name\s*\#(\d+)\s*\]/i ) {
        $id = $captures[-1];
    } else {
        foreach my $tag ( RT->System->SubjectTag ) {
            next unless my @captures = $Subject =~
/\[\Q$tag\E\s+\#(\d+)\s*\]/i;
            $id = $captures[-1];
            last;
        }
    }
    return undef unless $id;

    $RT::Logger->debug("Found a ticket ID. It's $id");
    return $id;
}



On Mon, Oct 31, 2016 at 12:18 PM, Nilesh <[email protected]> wrote:

> To extend you should either add code in Email_Local.pm or
> Email_Overlay.pm. If you name it as Email.pm then you have to copy all code
> from existing module and modify it.
>
> I'm not sure about differences between Overlay and Local but I think that
> difference is for OO vs adding some functionality.
>
> --
> Nilesh
>
> On 31-Oct-2016 9:45 PM, "Matt Zagrabelny" <[email protected]> wrote:
>
>> Hi Alex,
>>
>> On Mon, Oct 31, 2016 at 11:09 AM, Alex Hall <[email protected]> wrote:
>> > Hey list,
>> > How would I override /opt/rt4/lib/RT/Interface/Email.pm?
>>
>> Overlays.
>>
>> https://docs.bestpractical.com/rt/4.4.1/RT/StyleGuide.html#
>> EXTENDING-RT-CLASSES
>>
>> It looks like there is also an outdated wiki article:
>>
>> https://rt-wiki.bestpractical.com/wiki/ObjectModel
>>
>> -m
>> ---------
>> RT 4.4 and RTIR training sessions, and a new workshop day!
>> https://bestpractical.com/training
>> * Los Angeles - Q1 2017
>>
>
> ---------
> RT 4.4 and RTIR training sessions, and a new workshop day!
> https://bestpractical.com/training
> * Los Angeles - Q1 2017
>



-- 
Alex Hall
Automatic Distributors, IT department
[email protected]

---------
RT 4.4 and RTIR training sessions, and a new workshop day! https://bestpractical.com/training
* Los Angeles - Q1 2017
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.