Bug 16760: fix Circulation Statistics wizard under Plack
authorGalen Charlton <gmcharlt@gmail.com>
Tue, 5 Jul 2016 16:22:39 +0000 (16:22 +0000)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 8 Jul 2016 12:48:27 +0000 (12:48 +0000)
This patch fixes some variable scoping problems when running
the circulation statistics wizard under Plack.  For example,
when using the item type as a row header, with this patch the
item type description is displayed rather than "UKNOWN VALUE".

This patch also enables warnings and fixes a couple variable
initialization issues. (Note that turning on warnings across
the board would make it easier to identify Plack variable scoping
issues, as "Variable "$foo" is not available at' errors would
be recorded in the Plack error log).

To test
-------
[1] Run the staff interface under Plack.
[2] Go to the Circulation Statistics Wizard and run a report
    using item type as the row. Note that the row labels
    display as "UNKNOWN VALUE" rather than the item type.
[3] Apply the patch and restart Plack.
[4] Run step #2 again; this time, the item type descriptions should
    be used as the row labels.

Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
reports/issues_stats.pl

index 34911b2..0de1a85 100755 (executable)
@@ -18,7 +18,7 @@
 # along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 use strict;
-#use warnings; FIXME - Bug 2505
+use warnings;
 
 use CGI qw ( -utf8 );
 use Date::Manip;
@@ -45,7 +45,7 @@ Plugin that shows circulation stats
 =cut
 
 # my $debug = 1;       # override for now.
-my $input = new CGI;
+my $input = CGI->new;
 my $fullreportname = "reports/issues_stats.tt";
 my $do_it    = $input->param('do_it');
 my $line     = $input->param("Line");
@@ -70,19 +70,19 @@ my ($template, $borrowernumber, $cookie) = get_template_and_user({
        flagsrequired => {reports => '*'},
        debug => 0,
 });
-our $sep     = $input->param("sep");
+our $sep     = $input->param("sep") // '';
 $sep = "\t" if ($sep eq 'tabulation');
 $template->param(do_it => $do_it,
 );
 
-my $itemtypes = GetItemTypes();
-my $categoryloop = GetBorrowercategoryList;
+our $itemtypes = GetItemTypes();
+our $categoryloop = GetBorrowercategoryList;
 
-my $ccodes    = GetKohaAuthorisedValues("items.ccode");
-my $locations = GetKohaAuthorisedValues("items.location");
+our $ccodes    = GetKohaAuthorisedValues("items.ccode");
+our $locations = GetKohaAuthorisedValues("items.location");
 
-my $Bsort1 = GetAuthorisedValues("Bsort1");
-my $Bsort2 = GetAuthorisedValues("Bsort2");
+our $Bsort1 = GetAuthorisedValues("Bsort1");
+our $Bsort2 = GetAuthorisedValues("Bsort2");
 my ($hassort1,$hassort2);
 $hassort1=1 if $Bsort1;
 $hassort2=1 if $Bsort2;
@@ -219,8 +219,8 @@ sub calculate {
        push @loopfilter,{crit=>"Select Month",filter=>$monthsel} if ($monthsel);
 
        my @linefilter;
-       $debug and warn "filtres ". join "|", @filters;
-       my ($colsource, $linesource);
+       $debug and warn "filtres ". join "|", @$filters;
+       my ($colsource, $linesource) = ('', '');
        $linefilter[1] = @$filters[1] if ($line =~ /datetime/);
        $linefilter[0] = 
            ( $line =~ /datetime/ ) ? @$filters[0]