Bug 13041 - Can't add user as manager of basket if name includes a single quote
[koha.git] / reports / issues_avg_stats.pl
index b601a44..b0a1d4f 100755 (executable)
@@ -5,30 +5,30 @@
 #
 # This file is part of Koha.
 #
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
 #
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along
-# with Koha; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 use strict;
 #use warnings; FIXME - Bug 2505
 use C4::Auth;
-use CGI;
+use CGI qw ( -utf8 );
 use C4::Context;
 use C4::Branch; # GetBranches
 use C4::Output;
 use C4::Koha;
 use C4::Circulation;
 use C4::Reports;
-use C4::Dates qw/format_date format_date_in_iso/;
+use Koha::DateUtils;
 use Date::Calc qw(Delta_Days);
 
 =head1 NAME
@@ -43,14 +43,20 @@ plugin that shows a stats on borrowers
 
 my $input = new CGI;
 my $do_it=$input->param('do_it');
-my $fullreportname = "reports/issues_avg_stats.tmpl";
+my $fullreportname = "reports/issues_avg_stats.tt";
 my $line = $input->param("Line");
 my $column = $input->param("Column");
-my @filters = $input->param("Filter");
-$filters[0]=format_date_in_iso($filters[0]);
-$filters[1]=format_date_in_iso($filters[1]);
-$filters[2]=format_date_in_iso($filters[2]);
-$filters[3]=format_date_in_iso($filters[3]);
+my @filters = $input->multi_param("Filter");
+$filters[0] = eval { output_pref( { dt => dt_from_string( $filters[0]), dateonly => 1, dateformat => 'iso' } ); }
+    if ( $filters[0] );
+$filters[1] = eval { output_pref( { dt => dt_from_string( $filters[1]), dateonly => 1, dateformat => 'iso' } ); }
+    if ( $filters[1] );
+$filters[2] = eval { output_pref( { dt => dt_from_string( $filters[2]), dateonly => 1, dateformat => 'iso' } ); }
+    if ( $filters[2] );
+$filters[3] = eval { output_pref( { dt => dt_from_string( $filters[3]), dateonly => 1, dateformat => 'iso' } ); }
+    if ( $filters[3] );
+
+
 my $podsp = $input->param("IssueDisplay");
 my $rodsp = $input->param("ReturnDisplay");
 my $calc = $input->param("Cellvalue");
@@ -115,94 +121,59 @@ if ($do_it) {
 } else {
     my $dbh = C4::Context->dbh;
     my @values;
-    my %labels;
-    my %select;
     my $req;
     $req = $dbh->prepare("select distinctrow categorycode,description from categories order by description");
     $req->execute;
-    my @select;
-    push @select,"";
-    $select{""}="";
+    my %labelsc;
+    my @selectc;
     while (my ($value, $desc) =$req->fetchrow) {
-        push @select, $value;
-        $select{$value}=$desc;
-    }
-    my $CGIBorCat=CGI::scrolling_list( -name     => 'Filter',
-                -id => 'borcat',
-                -values   => \@select,
-                -labels   => \%select,
-                -size     => 1,
-                -multiple => 0 );
-    
-    $req = $dbh->prepare( "select distinctrow itemtype,description from itemtypes order by description");
-    $req->execute;
-    undef @select;
-    undef %select;
-    push @select,"";
-    $select{""}="";
-    while (my ($value,$desc) =$req->fetchrow) {
-        push @select, $value;
-        $select{$value}=$desc;
+        push @selectc, $value;
+        $labelsc{$value} = $desc;
     }
-    my $CGIItemTypes=CGI::scrolling_list( -name     => 'Filter',
-                -id => 'itemtypes',
-                -values   => \@select,
-                -labels    => \%select,
-                -size     => 1,
-                -multiple => 0 );
-    
+    my $BorCat = {
+        values   => \@selectc,
+        labels   => \%labelsc,
+    };
+
+    my $itemtypes = GetItemTypes( style => 'array' );
+
     $req = $dbh->prepare("select distinctrow sort1 from borrowers where sort1 is not null order by sort1");
     $req->execute;
-    undef @select;
-    push @select,"";
+    my @selects1;
     my $hassort1;
     while (my ($value) =$req->fetchrow) {
         $hassort1 =1 if ($value);
-        push @select, $value;
+        push @selects1, $value;
     }
-    
-    my $CGISort1=CGI::scrolling_list( -name     => 'Filter',
-                -id => 'sort1',
-                -values   => \@select,
-                -size     => 1,
-                -multiple => 0 );
+    my $Sort1 = {
+        values   => \@selects1,
+    };
     
     $req = $dbh->prepare("select distinctrow sort2 from borrowers where sort2 is not null order by sort2");
     $req->execute;
-    undef @select;
-    push @select,"";
+    my @selects2;
     my $hassort2;
     my $hglghtsort2;
     while (my ($value) =$req->fetchrow) {
         $hassort2 =1 if ($value);
         $hglghtsort2= !($hassort1);
-        push @select, $value;
+        push @selects2, $value;
     }
-    my $CGISort2=CGI::scrolling_list( -name     => 'Filter',
-                -id => 'sort2',
-                -values   => \@select,
-                -size     => 1,
-                -multiple => 0 );
-    
-    my $CGIextChoice=CGI::scrolling_list(
-                -name     => 'MIME',
-                -id       => 'MIME',
-                -values   => ['CSV'], # FIXME translation
-                -size     => 1,
-                -multiple => 0 );
+    my $Sort2 = {
+        values   => \@selects2,
+    };
     
     my $CGIsepChoice=GetDelimiterChoices;
     
     $template->param(
-                    CGIBorCat    => $CGIBorCat,
-                    CGIItemType  => $CGIItemTypes,
+                    BorCat       => $BorCat,
+                    itemtypes    => $itemtypes,
                     branchloop   => GetBranchesLoop(),
                     hassort1     => $hassort1,
                     hassort2     => $hassort2,
                     HlghtSort2   => $hglghtsort2,
-                    CGISort1     => $CGISort1,
-                    CGISort2     => $CGISort2,
-                    CGIextChoice => $CGIextChoice,
+                    Sort1        => $Sort1,
+                    Sort2        => $Sort2,
                     CGIsepChoice => $CGIsepChoice
                     );
 output_html_with_http_headers $input, $cookie, $template->output;
@@ -237,7 +208,8 @@ sub calculate {
             if ($i>=4) {
                 $cell{filter} .= @$filters[$i];
             } else {
-                $cell{filter} .= format_date(@$filters[$i]);
+                $cell{filter} .= eval { output_pref( { dt => dt_from_string( @$filters[$i] ), dateonly => 1 }); }
+                   if ( @$filters[$i] );
             }
             $cell{crit} .="Issue From" if ($i==0);
             $cell{crit} .="Issue To" if ($i==1);