X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Flib%2FRT%2FShredder%2FPlugin.pm;fp=rt%2Flib%2FRT%2FShredder%2FPlugin.pm;h=2c7a79009d85d5559cc542ead0d1f2779a038809;hb=1c538bfabc2cd31f27067505f0c3d1a46cba6ef0;hp=9ee2b93c1d8bcdf52ae18281edde025dffe65547;hpb=4f5619288413a185e9933088d9dd8c5afbc55dfa;p=freeside.git diff --git a/rt/lib/RT/Shredder/Plugin.pm b/rt/lib/RT/Shredder/Plugin.pm index 9ee2b93c1..2c7a79009 100644 --- a/rt/lib/RT/Shredder/Plugin.pm +++ b/rt/lib/RT/Shredder/Plugin.pm @@ -103,6 +103,7 @@ sub _Init my $self = shift; my %args = ( @_ ); $self->{'opt'} = \%args; + return; } =head2 List @@ -137,7 +138,7 @@ sub List delete $res{'Base'}; foreach my $name( keys %res ) { my $class = join '::', qw(RT Shredder Plugin), $name; - unless( eval "require $class" ) { + unless( $class->require ) { delete $res{ $name }; next; } @@ -161,6 +162,8 @@ Other arguments are sent to the constructor of the plugin Returns C<$status> and C<$message>. On errors status is C value. +In scalar context, returns $status only. + =cut sub LoadByName @@ -169,17 +172,16 @@ sub LoadByName my $name = shift or return (0, "Name not specified"); $name =~ /^\w+(::\w+)*$/ or return (0, "Invalid plugin name"); - local $@; my $plugin = "RT::Shredder::Plugin::$name"; - eval "require $plugin" or return( 0, $@ ); - return( 0, "Plugin '$plugin' has no method new") unless $plugin->can('new'); + $plugin->require or return( 0, "Failed to load $plugin" ); + return wantarray ? ( 0, "Plugin '$plugin' has no method new") : 0 unless $plugin->can('new'); my $obj = eval { $plugin->new( @_ ) }; - return( 0, $@ ) if $@; - return( 0, 'constructor returned empty object' ) unless $obj; + return wantarray ? ( 0, $@ ) : 0 if $@; + return wantarray ? ( 0, 'constructor returned empty object' ) : 0 unless $obj; $self->Rebless( $obj ); - return( 1, "successfuly load plugin" ); + return wantarray ? ( 1, "successfuly load plugin" ) : 1; } =head2 LoadByString