Merge remote-tracking branch 'origin/new/bug_7955'
authorPaul Poulain <paul.poulain@biblibre.com>
Wed, 1 Aug 2012 14:07:08 +0000 (16:07 +0200)
committerPaul Poulain <paul.poulain@biblibre.com>
Wed, 1 Aug 2012 14:07:08 +0000 (16:07 +0200)
C4/Members/Statistics.pm
members/statistics.pl

index 302259c..9f26b86 100644 (file)
@@ -40,6 +40,18 @@ BEGIN {
     );
 }
 
+
+our $fields = get_fields();
+
+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';
+    }
+    return $r;
+}
+
 =head2 construct_query
   Build a sql query from a subquery
   Adds statistics fields to the select and the group by clause
@@ -47,10 +59,9 @@ BEGIN {
 sub construct_query {
     my $count    = shift;
     my $subquery = shift;
-    my $fields = C4::Context->preference('StatisticsFields') || 'location|itype|ccode';
     my @select_fields = split '\|', $fields;
-    my $query = "SELECT COUNT(*) as count_$count";
-    $query .= ", " . C4::Context->dbh->quote( $_ ) for @select_fields;
+    my $query = "SELECT COUNT(*) as count_$count,";
+    $query .= join ',', @select_fields;
 
     $query .= " " . $subquery;
 
index 8551ec8..7125560 100755 (executable)
@@ -58,7 +58,7 @@ foreach my $key ( keys %$borrower ) {
 }
 
 # Construct column names
-my $fields = C4::Context->preference('StatisticsFields') || 'location|itype|ccode';
+my $fields = C4::Members::Statistics::get_fields();
 our @statistic_column_names = split '\|', $fields;
 our @value_column_names = ( 'count_precedent_state', 'count_total_issues_today', 'count_total_issues_returned_today' );
 our @column_names = ( @statistic_column_names, @value_column_names );
@@ -70,6 +70,7 @@ my $total_issues_returned_today = GetTotalIssuesReturnedTodayByBorrower( $borrow
 my $r = merge (
     @$precedent_state, @$total_issues_today, @$total_issues_returned_today
 );
+
 add_actual_state( $r );
 my ( $total, $datas ) = build_array( $r );
 
@@ -194,7 +195,7 @@ sub merge {
         for my $ch ( @r ) {
             $exists = 1;
             for my $cn ( @statistic_column_names ) {
-                if ( not $ch->{$cn} eq $h->{$cn} ) {
+                if ( $ch->{$cn} and not $ch->{$cn} eq $h->{$cn} ) {
                     $exists = 0;
                     last;
                 }