X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FInstallationCheck.pm;h=cf523be2a3b468ae0803518ff00578089e92092c;hb=2508bbb1ab2056ec40635f4dda1c7023a5f3254f;hp=fc8560bd08329b76aab28c2f2d8d3d3901315874;hpb=62a8aa81ec93edf284b3ffcc065120b3fe303fb5;p=kivitendo-erp.git diff --git a/SL/InstallationCheck.pm b/SL/InstallationCheck.pm index fc8560bd0..cf523be2a 100644 --- a/SL/InstallationCheck.pm +++ b/SL/InstallationCheck.pm @@ -1,18 +1,32 @@ package SL::InstallationCheck; -use vars qw(@required_modules); +use English '-no_match_vars'; +use IO::File; + +use vars qw(@required_modules @optional_modules); + +use strict; @required_modules = ( - { "name" => "Class::Accessor", "url" => "http://search.cpan.org/~kasei/" }, - { "name" => "CGI", "url" => "http://search.cpan.org/~lds/" }, - { "name" => "CGI::Ajax", "url" => "http://search.cpan.org/~bct/" }, - { "name" => "DBI", "url" => "http://search.cpan.org/~timb/" }, - { "name" => "DBD::Pg", "url" => "http://search.cpan.org/~dbdpg/" }, - { "name" => "HTML::Template", "url" => "http://search.cpan.org/~samtregar/" }, - { "name" => "Archive::Zip", "url" => "http://search.cpan.org/~adamk/" }, - { "name" => "Text::Iconv", "url" => "http://search.cpan.org/~mpiotr/" }, - { "name" => "Klaus", "url" => "http://dum.my/" }, - ); + { name => "Archive::Zip", url => "http://search.cpan.org/~adamk/" }, + { name => "Class::Accessor", url => "http://search.cpan.org/~kasei/" }, + { name => "CGI::Ajax", url => "http://search.cpan.org/~bct/" }, + { name => "DBI", url => "http://search.cpan.org/~timb/" }, + { name => "DBD::Pg", url => "http://search.cpan.org/~dbdpg/" }, + { name => "Email::Address", url => "http://search.cpan.org/~rjbs/" }, + { name => "FCGI", url => "http://search.cpan.org/~mstrout/" }, + { name => "IO::Wrap", url => "http://search.cpan.org/~dskoll/" }, + { name => "List::MoreUtils", url => "http://search.cpan.org/~vparseval/" }, + { name => "PDF::API2", url => "http://search.cpan.org/~areibens/" }, + { name => "Template", url => "http://search.cpan.org/~abw/" }, + { name => "Text::CSV_XS", url => "http://search.cpan.org/~hmbrand/" }, + { name => "Text::Iconv", url => "http://search.cpan.org/~mpiotr/" }, + { name => "URI", url => "http://search.cpan.org/~gaas/" }, + { name => "XML::Writer", url => "http://search.cpan.org/~josephw/" }, + { name => "YAML", url => "http://search.cpan.org/~ingy/" }, +); + +@optional_modules = (); sub module_available { my ($module) = @_; @@ -24,13 +38,36 @@ sub module_available { } } -sub test_all_modules { - my @missing_modules; +my %conditional_dependencies; + +sub check_for_conditional_dependencies { + if (!$conditional_dependencies{net_ldap}) { + $conditional_dependencies{net_ldap} = 1; + + my $in = IO::File->new('config/authentication.pl', 'r'); + if ($in) { + my $self = {}; + my $code; - map({ push(@missing_modules, $_) unless (module_available($_)); } - @required_modules); + while (my $line = <$in>) { + $code .= $line; + } + $in->close(); - return @missing_modules; + eval $code; + + if (! $EVAL_ERROR) { + + if ($self->{module} && ($self->{module} eq 'LDAP')) { + push @required_modules, { 'name' => 'Net::LDAP', 'url' => 'http://search.cpan.org/~gbarr/' }; + } + } + } + } +} + +sub test_all_modules { + return grep { !module_available($_->{name}) } @required_modules; } 1;