[rt-users] Overriding files in lib/RT?
Martin Wheldon
martin.wheldon at greenhills-it.co.uk
Tue Nov 1 05:30:20 EDT 2016
Hi Alex,
You may need to add the following to the end of your Email_Local.pm
file:
1;
Best Regards
Martin
On 2016-10-31 20:17, Alex Hall wrote:
> 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 <me at nileshgr.com> 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" <mzagrabe at d.umn.edu>
>> wrote:
>>
>>> Hi Alex,
>>>
>>> On Mon, Oct 31, 2016 at 11:09 AM, Alex Hall <ahall at autodist.com>
>>> wrote:
>>>> Hey list,
>>>> How would I override /opt/rt4/lib/RT/Interface/Email.pm [1]?
>>>
>>> Overlays.
>>>
>>>
>>
> https://docs.bestpractical.com/rt/4.4.1/RT/StyleGuide.html#EXTENDING-RT-CLASSES
>>> [2]
>>>
>>> It looks like there is also an outdated wiki article:
>>>
>>> https://rt-wiki.bestpractical.com/wiki/ObjectModel [3]
>>>
>>> -m
>>> ---------
>>> RT 4.4 and RTIR training sessions, and a new workshop day!
>>> https://bestpractical.com/training [4]
>>> * Los Angeles - Q1 2017
>>
>> ---------
>> RT 4.4 and RTIR training sessions, and a new workshop day!
>> https://bestpractical.com/training [4]
>> * Los Angeles - Q1 2017
>
> --
>
> Alex Hall
> Automatic Distributors, IT department
> ahall at autodist.com
>
>
> Links:
> ------
> [1] http://l.pm
> [2]
> https://docs.bestpractical.com/rt/4.4.1/RT/StyleGuide.html#EXTENDING-RT-CLASSES
> [3] https://rt-wiki.bestpractical.com/wiki/ObjectModel
> [4] https://bestpractical.com/training
>
> ---------
> RT 4.4 and RTIR training sessions, and a new workshop day!
> https://bestpractical.com/training
> * Los Angeles - Q1 2017
More information about the rt-users
mailing list