X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=reports%2Fcatalogue_stats.pl;h=c8e21940f494058fd4a7645e81c20f670876bee5;hb=92d021f989227fa798b13f63abae4ebf53744d17;hp=365065fc4103d9ad9f6e4c3699f285450c3f7ae0;hpb=aa79cce602f05b3075b9899498bf3803fc6b0d2d;p=koha_fer diff --git a/reports/catalogue_stats.pl b/reports/catalogue_stats.pl index 365065fc41..c8e21940f4 100755 --- a/reports/catalogue_stats.pl +++ b/reports/catalogue_stats.pl @@ -14,12 +14,12 @@ # 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# 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. use strict; -# use warnings; # FIXME +#use warnings; FIXME - Bug 2505 use C4::Auth; use CGI; use C4::Context; @@ -51,7 +51,6 @@ my $lccndigits = $input->param("lccndigits"); my $cotedigits = $input->param("cotedigits"); my $output = $input->param("output"); my $basename = $input->param("basename"); -my $mime = $input->param("MIME"); our $sep = $input->param("sep"); $sep = "\t" if ($sep eq 'tabulation'); my $item_itype; @@ -66,7 +65,7 @@ my ($template, $borrowernumber, $cookie) query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => {reports => 1}, + flagsrequired => {reports => '*'}, debug => 1, }); $template->param(do_it => $do_it); @@ -75,7 +74,7 @@ if ($do_it) { if ($output eq "screen"){ $template->param(mainloop => $results); output_html_with_http_headers $input, $cookie, $template->output; - exit(1); + exit; } else { print $input->header(-type => 'application/vnd.sun.xml.calc', -encoding => 'utf-8', @@ -103,7 +102,7 @@ if ($do_it) { print $sep.$col->{totalcol}; } print $sep.@$results[0]->{total}; - exit(1); + exit; } } else { my $dbh = C4::Context->dbh; @@ -153,31 +152,19 @@ if ($do_it) { push @authvals, { code => $_, description => $authvals->{$_} }; } - - my $branches=GetBranches(); - my @branchloop; - foreach (sort {$branches->{$a}->{'branchname'} cmp $branches->{$b}->{'branchname'}} keys %$branches) { - my $thisbranch = ''; # FIXME: populate $thisbranch to preselect one - my %row = (branchcode => $_, - selected => ($thisbranch eq $_ ? 1 : 0), - branchname => $branches->{$_}->{'branchname'}, - ); - push @branchloop, \%row; - } - my $locations = GetKohaAuthorisedValues("items.location"); my @locations; foreach (sort keys %$locations) { push @locations, { code => $_, description => "$_ - " . $locations->{$_} }; } - my @mime = ( map { +{type =>$_} } (split /[;:]/,C4::Context->preference("MIME")) ); + my @mime = ( map { +{type =>$_} } (split /[;:]/, 'CSV') ); # FIXME translation $template->param(hasdewey=>$hasdewey, haslccn => $haslccn, hascote => $hascote, CGIItemType => $CGIitemtype, - CGIBranch => \@branchloop, + CGIBranch => GetBranchesLoop(C4::Context->userenv->{'branch'}), locationloop => \@locations, authvals => \@authvals, CGIextChoice => \@mime, @@ -215,8 +202,6 @@ if($barcodefilter){ } # Change * to % $barcodefilter =~ s/\*/%/g; -}else{ - $barcodefilter = "%"; } # Filters @@ -300,27 +285,31 @@ if($barcodefilter){ $linefield .= $line; } - my $strsth; - $strsth .= "select distinctrow $linefield from biblioitems left join items on (items.biblioitemnumber = biblioitems.biblioitemnumber) where barcode $not LIKE ? AND $line is not null "; + my $strsth = "SELECT DISTINCTROW $linefield FROM biblioitems + INNER JOIN items USING (biblioitemnumber) + WHERE $line IS NOT NULL "; + $strsth .= " AND barcode $not LIKE ? " if ($barcodefilter); if ( @linefilter ) { if ($linefilter[1]){ - $strsth .= " and $line >= ? " ; - $strsth .= " and $line <= ? " ; + $strsth .= " AND $line >= ? " ; + $strsth .= " AND $line <= ? " ; } elsif ($linefilter[0]) { $linefilter[0] =~ s/\*/%/g; - $strsth .= " and $line LIKE ? " ; + $strsth .= " AND $line LIKE ? " ; } } - $strsth .=" order by $linefield"; + $strsth .=" ORDER BY $linefield"; $debug and print STDERR "catalogue_stats SQL: $strsth\n"; - + my $sth = $dbh->prepare( $strsth ); if (( @linefilter ) and ($linefilter[1])){ $sth->execute($barcodefilter,$linefilter[0],$linefilter[1]); } elsif ($barcodefilter,$linefilter[0]) { $sth->execute($barcodefilter,$linefilter[0]); - } else { + } elsif ($barcodefilter) { $sth->execute($barcodefilter); + }else{ + $sth->execute(); } while ( my ($celvalue) = $sth->fetchrow) { my %cell; @@ -348,24 +337,28 @@ if($barcodefilter){ my $strsth2 = " SELECT distinctrow $colfield FROM biblioitems - LEFT JOIN items - ON (items.biblioitemnumber = biblioitems.biblioitemnumber) - WHERE barcode $not LIKE ? AND $column IS NOT NULL "; + INNER JOIN items + USING (biblioitemnumber) + WHERE $column IS NOT NULL "; + $strsth2 .= " AND barcode $not LIKE ?" if $barcodefilter; + if (( @colfilter ) and ($colfilter[1])) { - $strsth2 .= " and $column> ? and $column< ?"; + $strsth2 .= " AND $column> ? AND $column< ?"; }elsif ($colfilter[0]){ $colfilter[0] =~ s/\*/%/g; - $strsth2 .= " and $column LIKE ? "; + $strsth2 .= " AND $column LIKE ? "; } - $strsth2 .= " order by $colfield"; + $strsth2 .= " ORDER BY $colfield"; $debug and print STDERR "SQL: $strsth2"; my $sth2 = $dbh->prepare( $strsth2 ); if ((@colfilter) and ($colfilter[1])) { $sth2->execute($barcodefilter,$colfilter[0],$colfilter[1]); } elsif ($colfilter[0]){ $sth2->execute($barcodefilter,$colfilter[0]); + } elsif ($barcodefilter){ + $sth2->execute($barcodefilter); } else { - $sth2->execute($barcodefilter); + $sth2->execute(); } while (my ($celvalue) = $sth2->fetchrow) { my %cell; @@ -395,7 +388,9 @@ if($barcodefilter){ } # preparing calculation - my $strcalc .= "SELECT $linefield, $colfield, count(*) FROM biblioitems LEFT JOIN items ON (items.biblioitemnumber = biblioitems.biblioitemnumber) WHERE 1 AND barcode $not like ? "; + my $strcalc = "SELECT $linefield, $colfield, count(*) FROM biblioitems INNER JOIN items ON (items.biblioitemnumber = biblioitems.biblioitemnumber) WHERE 1 "; + $strcalc .= "AND barcode $not like ? " if ($barcodefilter); + if (@$filters[0]){ @$filters[0]=~ s/\*/%/g; $strcalc .= " AND dewey >" . @$filters[0]; @@ -458,7 +453,11 @@ if($barcodefilter){ $strcalc .= " group by $linefield, $colfield order by $linefield,$colfield"; $debug and warn "SQL: $strcalc"; my $dbcalc = $dbh->prepare($strcalc); - $dbcalc->execute($barcodefilter); + if($barcodefilter){ + $dbcalc->execute($barcodefilter); + }else{ + $dbcalc->execute(); + } # warn "filling table"; my $emptycol;