My bad, in the above script, the $self was holding the 1st argument, rather
than the reference of RT::Users class.

The original subroutine returns the ref of RT::Users.
As per the documentation of Hook::Lexwrap, the returned value from the
original subroutine should be accessible from the post subroutine using
$_[-1].

When I access $_[-1], using print or warn, I get the warning
* [warning]: Use of uninitialized value $_[-1] in concatenation (.) or
string*

Users_Local.pm
-----------------------
package RT::Users;
use strict;
use Hook::LexWrap;
wrap 'SimpleSearch' =>
        post=> sub {
        RT::Logger->info("accessing return value here $_[-1]");
        RT::Logger->info("I got the arguments in post: [@_]");
},
;
1;

Can anybody please help how will I be able to fetch the value returned by
the original subroutine ?
Thanks.



On Tue, Jun 21, 2016 at 1:05 PM, aniket tripathy <[email protected]>
wrote:

> Hi,
>
> I intend to filter the results returned by SimpleSearch method in Users.pm
> based on the custom field value set in the current user logged in.
>
> I am using Hook::LexWrap in the Users_Local.pm overlay file, to write a
> post method to filter the results of SimpleSearch. How can I get a ref of
> CurrentUser which in turn will help to fetch the custom field value on that
> user?
>
> I tried using
> my $user = $self->CurrentUser;
>
> But getting the following error:
> [error]: Can't locate object method "CurrentUser" via package "Privileged"
> (perhaps you forgot to load "Privileged"?)
>
> Can anybody suggest what am I doing wrong here?
>
> Thanks in Advance.
>
> -Aniket
>
---------
RT 4.4 and RTIR Training Sessions https://bestpractical.com/training
* Los Angeles - September, 2016

Reply via email to