X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FMembers%2FStatistics.pm;h=8259dda3197609a31d4570139caee7e813cfd88d;hb=9d6d641d1f8b77271800f43bc027b651f9aea52b;hp=9f26b86a253fd039ee684ba3420e71339c896141;hpb=913aba1a6639e00535cdb631ed2ca80cbe80289f;p=srvgit diff --git a/C4/Members/Statistics.pm b/C4/Members/Statistics.pm index 9f26b86a25..8259dda319 100644 --- a/C4/Members/Statistics.pm +++ b/C4/Members/Statistics.pm @@ -3,18 +3,18 @@ package C4::Members::Statistics; # Copyright 2012 BibLibre # 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 . =head1 NAME @@ -26,39 +26,56 @@ use Modern::Perl; use C4::Context; -our ( @ISA, @EXPORT, @EXPORT_OK, $debug ); +our ( @ISA, @EXPORT_OK ); BEGIN { - $debug = $ENV{DEBUG} || 0; require Exporter; @ISA = qw(Exporter); - push @EXPORT, qw( - &GetTotalIssuesTodayByBorrower - &GetTotalIssuesReturnedTodayByBorrower - &GetPrecedentStateByBorrower + @EXPORT_OK = qw( + get_fields + GetTotalIssuesTodayByBorrower + GetTotalIssuesReturnedTodayByBorrower + GetPrecedentStateByBorrower ); } +=head2 get_fields + Get fields form syspref 'StatisticsFields' + Returns list of valid fields, defaults to 'location|itype|ccode' + if syspref is empty or does not contain valid fields -our $fields = get_fields(); +=cut sub get_fields { - my $r = C4::Context->preference('StatisticsFields') || 'location|itype|ccode'; - unless ( $r =~ m/^(\w|\d|\||-)+$/) { - warn "Members/Statistics : Bad value for syspref StatisticsFields" if $debug; - $r = 'location|itype|ccode'; + + my $syspref = C4::Context->preference('StatisticsFields'); + my $ret; + + if ( $syspref ) { + my @ret; + my @spfields = split ('\|', $syspref); + my $schema = Koha::Database->new()->schema(); + my @columns = $schema->source('Item')->columns; + + foreach my $fn ( @spfields ) { + push ( @ret, $fn ) if ( grep { $_ eq $fn } @columns ); + } + $ret = join( '|', @ret); } - return $r; + return $ret || 'location|itype|ccode'; } =head2 construct_query Build a sql query from a subquery Adds statistics fields to the select and the group by clause + =cut + sub construct_query { my $count = shift; my $subquery = shift; + my $fields = get_fields(); my @select_fields = split '\|', $fields; my $query = "SELECT COUNT(*) as count_$count,"; $query .= join ',', @select_fields; @@ -74,7 +91,9 @@ sub construct_query { =head2 GetTotalIssuesTodayByBorrower Return total issues for a borrower at this current day + =cut + sub GetTotalIssuesTodayByBorrower { my ($borrowernumber) = @_; my $dbh = C4::Context->dbh; @@ -93,7 +112,9 @@ sub GetTotalIssuesTodayByBorrower { =head2 GetTotalIssuesReturnedTodayByBorrower Return total issues returned by a borrower at this current day + =cut + sub GetTotalIssuesReturnedTodayByBorrower { my ($borrowernumber) = @_; my $dbh = C4::Context->dbh; @@ -107,7 +128,9 @@ sub GetTotalIssuesReturnedTodayByBorrower { =head2 GetPrecedentStateByBorrower Return the precedent state (before today) for a borrower of his checkins and checkouts + =cut + sub GetPrecedentStateByBorrower { my ($borrowernumber) = @_; my $dbh = C4::Context->dbh;