1###############################################################################
2# ModuleChecker.pm                                                            #
3# $Date: 12.02.14 $                                                           #
4###############################################################################
5# YaBB: Yet another Bulletin Board                                            #
6# Open-Source Community Software for Webmasters                               #
7# Version:        YaBB 2.6.11                                                 #
8# Packaged:       December 2, 2014                                            #
9# Distributed by: http://www.yabbforum.com                                    #
10# =========================================================================== #
11# Copyright (c) 2000-2014 YaBB (www.yabbforum.com) - All Rights Reserved.     #
12# Software by:  The YaBB Development Team                                     #
13#               with assistance from the YaBB community.                      #
14###############################################################################
15use strict;
16#use warnings;
17use CGI::Carp qw(fatalsToBrowser);
18use English qw(-no_match_vars);
19our $VERSION = '2.6.11';
20
21our $modulecheckerpmver = 'YaBB 2.6.11 $Revision: 1611 $';
22our ( $action, $yymain, %modulecheck );
23if ( $action eq 'detailedversion' ) { return 1; }
24
25my $script_root = $ENV{'SCRIPT_FILENAME'};
26if ( !$script_root ) {
27    $script_root = $ENV{'PATH_TRANSLATED'};
28}
29
30my ( $checker_output, $i );
31
32my @modules = qw(Digest::MD5 Time::HiRes Time::Local DateTime DateTime::TimeZone File::Find CGI Net::SMTP Net::SMTP::TLS Net::DNS Mail::CheckUser Compress::Zlib Compress::Bzip2 Archive::Tar Archive::Zip MIME::Lite LWP::UserAgent HTTP::Request::Common Crypt::SSLeay IO::Socket::INET Digest::HMAC_MD5 Carp bytes integer English URI::Escape);
33
34foreach my $module ( @modules ) {
35    eval "require $module;";
36    my $dont_continue_setup = q{};
37
38    if ($EVAL_ERROR) {
39        if ( $module eq 'Digest::MD5' ) { $dont_continue_setup = 1; }
40        $i = $modulecheck{'8'};
41        my $e = $EVAL_ERROR;
42
43        # IE does display the @INC path it in one line  :-(
44        # If you use IE and don't like what you see, remove the
45        # comment (#) in next line.
46        # $e =~ s/\//\\/g;
47        $checker_output .= qq~<tr>
48                    <td class="windowbg2"><span class="important">$module</span></td>
49                    <td class="windowbg2">
50                        $modulecheck{'5'}<br />
51                        <br />$e
52                    </td>
53                    <td class="windowbg2">$modulecheck{"$module"}</td>
54                </tr>~;
55    }
56    else {
57        if ( $module eq 'DateTime::TimeZone' ) {
58            my $version   = $module->VERSION;
59            my $myversion = (
60                "%s %s is\n %s\n",
61                $module, ( defined $version ? $version : '<NO $VERSION>' ),
62            );
63            $checker_output .= qq~<tr>
64                    <td class="windowbg2"><span class="good">$module</span></td>
65                    <td class="windowbg2" colspan="2">$modulecheck{'6'} $modulecheck{'DateTime::TimeZone2'} <b>$myversion</b></td>
66                </tr>~;
67        }
68        else {
69            $checker_output .= qq~<tr>
70                    <td class="windowbg2"><span class="good">$module</span></td>
71                    <td class="windowbg2" colspan="2">$modulecheck{'6'}</td>
72                </tr>~;
73        }
74    }
75}
76my $perlver = $];
77
78if ( $script_root !~ /ModuleChecker[.]\w+$/xsm ) {
79    $yymain .= qq~
80        <div class="bordercolor rightboxdiv" style="float: left; margin-top:.5em">
81            <table class="border-space pad-cell">
82                <tr>
83                    <td class="titlebg" colspan="3"><b>$modulecheck{'1'}</b></td>
84                </tr><tr>
85                    <td class="catbg" colspan="3">
86                        <span class="small">$modulecheck{'2'}</span>
87                    </td>
88                </tr><tr>
89                    <td class="catbg" colspan="3">
90                        <b>$modulecheck{'perlver'}</b>: $perlver
91                    </td>
92                </tr>~ . (
93        $i
94        ? qq~<tr>
95                    <td class="windowbg2">
96                        <span class="important"><b>$modulecheck{'7'}</b></span>
97                    </td>
98                    <td class="windowbg2" colspan="2">$i</td>
99                </tr>~
100        : q{}
101      )
102      . qq~<tr>
103                    <td class="catbg center"><b>$modulecheck{'3'}</b></td>
104                    <td class="catbg center" colspan="2"><b>$modulecheck{'4'}</b></td>
105                </tr>
106            $checker_output
107            </table>
108        </div>~;
109
110}
1111;
112