Changeset 14933


Ignore:
Timestamp:
2007-12-20T18:09:10+13:00 (14 years ago)
Author:
davidb
Message:

plugin.pm modified to look for plugins in extension folder

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gsdl/trunk/perllib/plugin.pm

    r14239 r14933  
    4444my ($verbosity, $outhandle, $failhandle, $globaloptions);
    4545
     46
     47sub load_plugin_require
     48{
     49    my ($pluginname) = @_;
     50
     51    my @check_list = ();
     52
     53    # pp_plugname shorthand for 'perllib' 'plugin' '$pluginname.pm'
     54    my $pp_plugname
     55    = &util::filename_cat('perllib', 'plugins', "${pluginname}.pm");
     56    my $collectdir = $ENV{'GSDLCOLLECTDIR'};
     57
     58    # find the plugin
     59    if (defined($ENV{'GSDLCOLLECTION'}))
     60    {
     61    my $customplugname
     62        = &util::filename_cat($collectdir, "custom",$ENV{'GSDLCOLLECTION'},
     63                  $pp_plugname);
     64    push(@check_list,$customplugname);
     65    }
     66
     67    my $colplugname = &util::filename_cat($collectdir, $pp_plugname);
     68    push(@check_list,$colplugname);
     69
     70    if (defined $ENV{'GSDLEXTS'}) {
     71
     72    my $ext_prefix = &util::filename_cat($ENV{'GSDLHOME'}, "ext");
     73
     74    my @extensions = split(/:/,$ENV{'GSDLEXTS'});
     75    foreach my $e (@extensions) {
     76        my $extplugname = &util::filename_cat($ext_prefix, $e, $pp_plugname);
     77        push(@check_list,$extplugname);
     78
     79    }
     80    }
     81
     82
     83    my $mainplugname = &util::filename_cat($ENV{'GSDLHOME'}, $pp_plugname);
     84    push(@check_list,$mainplugname);
     85
     86    my $success=0;
     87    foreach my $plugname (@check_list) {
     88    if (-e $plugname) {
     89        require $plugname;
     90        $success=1;
     91        last;
     92    }
     93    }
     94
     95    if (!$success) {
     96    &gsprintf(STDERR, "{plugin.could_not_find_plugin}\n",
     97          $pluginname);
     98    die "\n";
     99    }
     100}
     101
    46102sub load_plugin_for_info {
    47103    my ($pluginname) = shift @_;
    48104
    49     # find the plugin
    50     my $customplugname;
    51     if (defined($ENV{'GSDLCOLLECTION'}))
    52     {
    53     $customplugname = &util::filename_cat($ENV{'GSDLCOLLECTDIR'}, "custom", $ENV{'GSDLCOLLECTION'},
    54                                              'perllib', 'plugins', "${pluginname}.pm");
    55     }
    56     my $colplugname = &util::filename_cat($ENV{'GSDLCOLLECTDIR'}, 'perllib', 'plugins',
    57                       "${pluginname}.pm");
    58     my $mainplugname = &util::filename_cat($ENV{'GSDLHOME'}, 'perllib', 'plugins',
    59                        "${pluginname}.pm");
    60     if (defined($customplugname) && -e $customplugname) { require $customplugname; }
    61     elsif (-e $colplugname) { require $colplugname; }
    62     elsif (-e $mainplugname) { require $mainplugname; }
    63     else {
    64     &gsprintf(STDERR, "{plugin.could_not_find_plugin}\n",
    65          $pluginname);
    66     die "\n";
    67     }
     105    load_plugin_require($pluginname);
    68106
    69107    # create a plugin object
     
    97135    next unless defined $pluginname;
    98136
    99     # find the plugin
    100         my $customplugname = &util::filename_cat($ENV{'GSDLCOLLECTDIR'}, "custom", $ENV{'GSDLCOLLECTION'},
    101                                                  'perllib', 'plugins', "${pluginname}.pm");
    102     my $colplugname = &util::filename_cat($ENV{'GSDLCOLLECTDIR'}, 'perllib', 'plugins',
    103                           "${pluginname}.pm");
    104     my $mainplugname = &util::filename_cat($ENV{'GSDLHOME'}, 'perllib', 'plugins',
    105                            "${pluginname}.pm");
    106         if (-e $customplugname) { require $customplugname; }
    107     elsif (-e $colplugname) { require $colplugname; }
    108     elsif (-e $mainplugname) { require $mainplugname; }
    109     else {
    110         gsprintf($outhandle, "{plugin.could_not_find_plugin}\n",
    111              $pluginname);
    112         die "\n";
    113     }
     137    load_plugin_require($pluginname);
    114138
    115139    # create a plugin object
Note: See TracChangeset for help on using the changeset viewer.