X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=reports%2Fbor_issues_top.pl;h=439db23810f42a51cfa19eefcd225c6badf740c5;hb=5d2677a4ac5c32a10be9fc955f406b22949fecec;hp=95fc28766f2556d14b118476bd5ed77a4a15141e;hpb=c0234dd9b9649063acf2617fecf5c6efda38a532;p=koha-ffzg.git diff --git a/reports/bor_issues_top.pl b/reports/bor_issues_top.pl index 95fc28766f..439db23810 100755 --- a/reports/bor_issues_top.pl +++ b/reports/bor_issues_top.pl @@ -4,32 +4,29 @@ # # 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 . -use strict; -#use warnings; FIXME - Bug 2505 -use CGI; -use C4::Auth; -use C4::Output; +use Modern::Perl; + +use CGI qw ( -utf8 ); +use C4::Auth qw( get_template_and_user ); +use C4::Output qw( output_html_with_http_headers ); use C4::Context; -use C4::Branch; # GetBranches -use C4::Koha; -use C4::Circulation; -use C4::Members; -use C4::Reports; -use C4::Debug; -use C4::Dates qw(format_date format_date_in_iso); +use C4::Reports qw( GetDelimiterChoices ); + +use Koha::ItemTypes; +use Koha::Patron::Categories; =head1 NAME @@ -37,36 +34,24 @@ plugin that shows a stats on borrowers =head1 DESCRIPTION -=over 2 - =cut -$debug = 1; -$debug and open DEBUG, ">/tmp/bor_issues_top.debug.log"; - -my $input = new CGI; -my $fullreportname = "reports/bor_issues_top.tmpl"; +my $input = CGI->new; +my $fullreportname = "reports/bor_issues_top.tt"; my $do_it = $input->param('do_it'); my $limit = $input->param("Limit"); my $column = $input->param("Criteria"); -my @filters = $input->param("Filter"); -foreach ( @filters[0..3] ) { - $_ and $_ = format_date_in_iso($_); -} +my @filters = $input->multi_param("Filter"); my $output = $input->param("output"); my $basename = $input->param("basename"); my ($template, $borrowernumber, $cookie) = get_template_and_user({template_name => $fullreportname, query => $input, type => "intranet", - authnotrequired => 0, flagsrequired => {reports => '*'}, - debug => 1, }); -our $sep = $input->param("sep"); -$sep = "\t" if ($sep eq 'tabulation'); +our $sep = C4::Context->csv_delimiter(scalar $input->param("sep")); $template->param(do_it => $do_it, - DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), ); if ($do_it) { # Displaying results @@ -102,50 +87,22 @@ if ($do_it) { print join($sep, map {$_->{totalcol}} @$cols); print $sep.@$results[0]->{total}; } - exit(1); + exit; } my $dbh = C4::Context->dbh; -my @values; # here each element returned by map is a hashref, get it? my @mime = ( map { {type =>$_} } (split /[;:]/, 'CSV') ); # FIXME translation my $delims = GetDelimiterChoices; -my $branches = GetBranches; -my @branchloop; -foreach (sort keys %$branches) { -# my $selected = 1 if $thisbranch eq $branch; - my %row = ( value => $_, -# selected => $selected, - branchname => $branches->{$_}->{branchname}, - ); - push @branchloop, \%row; -} -my $itemtypes = GetItemTypes; -my @itemtypeloop; -foreach (sort {$itemtypes->{$a}->{description} cmp $itemtypes->{$b}->{description}} keys %$itemtypes) { - my %row = (value => $_, - description => $itemtypes->{$_}->{description}, - ); - push @itemtypeloop, \%row; -} - -my ($codes,$labels) = GetborCatFromCatType(undef,undef); -my @borcatloop; -foreach (sort keys %$labels) { - my %row =(value => $_, - description => $labels->{$_}, - ); - push @borcatloop, \%row; -} - +my $patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['categorycode']}); +my $itemtypes = Koha::ItemTypes->search_with_localization; $template->param( mimeloop => \@mime, CGIseplist => $delims, - branchloop => \@branchloop, - itemtypeloop => \@itemtypeloop, - borcatloop => \@borcatloop, + itemtypes => $itemtypes, +patron_categories => $patron_categories, ); output_html_with_http_headers $input, $cookie, $template->output; @@ -154,13 +111,13 @@ sub calculate { my ($limit, $column, $filters) = @_; my @loopcol; - my @loopline; my @looprow; my %globalline; my %columns; my $grantotal =0; my $dbh = C4::Context->dbh; + # Checking filters my @loopfilter; my @cellmap = ( @@ -181,8 +138,7 @@ sub calculate { if (($i==1) and (@$filters[$i-1])) { $cell{err} = 1 if (@$filters[$i]<@$filters[$i-1]) ; } - # format the dates filters, otherwise just fill as is - $cell{filter} .= ($i>=4) ? @$filters[$i] : format_date(@$filters[$i]); + $cell{filter} .= @$filters[$i]; defined ($cellmap[$i]) and $cell{crit} .= $cellmap[$i]; push @loopfilter, \%cell; @@ -254,25 +210,20 @@ sub calculate { $strsth2 .=" GROUP BY $colfield"; $strsth2 .=" ORDER BY $colorder"; - $debug and print DEBUG "bor_issues_top (old_issues) SQL: $strsth2\n"; my $sth2 = $dbh->prepare($strsth2); $sth2->execute; - print DEBUG "rows: ", $sth2->rows, "\n"; while (my @row = $sth2->fetchrow) { $columns{($row[0] ||'NULL')}++; push @loopcol, { coltitle => $row[0] || 'NULL' }; } $strsth2 =~ s/old_issues/issues/g; - $debug and print DEBUG "bor_issues_top (issues) SQL: $strsth2\n"; $sth2 = $dbh->prepare($strsth2); $sth2->execute; - $debug and print DEBUG "rows: ", $sth2->rows, "\n"; while (my @row = $sth2->fetchrow) { $columns{($row[0] ||'NULL')}++; push @loopcol, { coltitle => $row[0] || 'NULL' }; } - $debug and print DEBUG "full array: ", Dumper(\%columns), "\n"; }else{ $columns{''} = 1; } @@ -280,7 +231,7 @@ sub calculate { my $strcalc ; # Processing average loanperiods - $strcalc .= "SELECT CONCAT(borrowers.surname , \",\\t\",borrowers.firstname), COUNT(*) AS RANK, borrowers.borrowernumber AS ID"; + $strcalc .= "SELECT CONCAT_WS('', borrowers.surname , \",\\t\", borrowers.firstname), COUNT(*) AS `RANK`, borrowers.borrowernumber AS ID"; $strcalc .= " , $colfield " if ($colfield); $strcalc .= " FROM `old_issues` LEFT JOIN borrowers USING(borrowernumber) @@ -305,14 +256,12 @@ sub calculate { } $strcalc .= " GROUP BY borrowers.borrowernumber"; $strcalc .= ", $colfield" if ($column); - $strcalc .= " ORDER BY RANK DESC"; + $strcalc .= " ORDER BY `RANK` DESC"; $strcalc .= ",$colfield " if ($colfield); $strcalc .= " LIMIT $limit" if ($limit); - $debug and print DEBUG "(old_issues) SQL : $strcalc\n"; my $dbcalc = $dbh->prepare($strcalc); $dbcalc->execute; - $debug and print DEBUG "rows: ", $dbcalc->rows, "\n"; my %patrons = (); # DATA STRUCTURE is going to look like this: # (2253=> {name=>"John Doe", @@ -328,13 +277,10 @@ sub calculate { $patrons{$id}->{oldcols}->{$col} = $rank; } - use Data::Dumper; - + $strcalc =~ s/old_issues/issues/g; - $debug and print DEBUG "(issues) SQL : $strcalc\n"; $dbcalc = $dbh->prepare($strcalc); $dbcalc->execute; - $debug and print DEBUG "rows: ", $dbcalc->rows, "\n"; while (my @data = $dbcalc->fetchrow) { my ($row, $rank, $id, $col) = @data; $col = "zzEMPTY" if (!defined($col)); @@ -353,7 +299,6 @@ sub calculate { $patrons{$id}->{total} += $count; } } - $debug and print DEBUG "\n\npatrons: ", Dumper(\%patrons); my $i = 1; my @cols_in_order = sort keys %columns; # if you want to order the columns, do something here @@ -363,6 +308,7 @@ sub calculate { } keys %patrons; foreach my $id (@ranked_ids) { my @loopcell; + foreach my $key (@cols_in_order) { if($column){ push @loopcell, { @@ -382,8 +328,10 @@ sub calculate { 'loopcell' => \@loopcell, 'hilighted' => ($i%2), }; + # use a limit, if a limit is defined + last if $i > $limit and $limit } - + # the header of the table $globalline{loopfilter}=\@loopfilter; # the core of the table @@ -396,6 +344,5 @@ sub calculate { return [\%globalline]; # reference to a 1 element array: that element is a hashref } -$debug and close DEBUG; 1; __END__