From 3c04a7915a6f9bdf83af3032a325b939d21c3f63 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Wed, 11 Mar 2009 10:28:44 -0500 Subject: [PATCH] fix error introduced in a previous commit Change to GetReservesFromBiblionumber() had effect of causing all requests of constrainttype other than 'o' to not be included in result. while ($foo) { $bar or next; # do stuff # do other stuff } is not equivalent to while ($foo) { if ($bar) { # do stuff } # do other stuff } Signed-off-by: Galen Charlton --- C4/Reserves.pm | 69 +++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index c780e32c24..a8e30703b0 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -228,40 +228,41 @@ sub GetReservesFromBiblionumber { while ( my $data = $sth->fetchrow_hashref ) { # FIXME - What is this doing? How do constraints work? - ($data->{constrainttype} eq 'o') or next; - $query = ' - SELECT biblioitemnumber - FROM reserveconstraints - WHERE biblionumber = ? - AND borrowernumber = ? - AND reservedate = ? - '; - my $csth = $dbh->prepare($query); - $csth->execute( $data->{biblionumber}, $data->{borrowernumber}, - $data->{reservedate}, ); - - my @bibitemno; - while ( my $bibitemnos = $csth->fetchrow_array ) { - push( @bibitemno, $bibitemnos ); # FIXME: inefficient: use fetchall_arrayref - } - my $count = scalar @bibitemno; - - # if we have two or more different specific itemtypes - # reserved by same person on same day - my $bdata; - if ( $count > 1 ) { - $bdata = GetBiblioItemData( $bibitemno[$i] ); - $i++; - } - else { - # Look up the book we just found. - $bdata = GetBiblioItemData( $bibitemno[0] ); - } - # Add the results of this latest search to the current - # results. - # FIXME - An 'each' would probably be more efficient. - foreach my $key ( keys %$bdata ) { - $data->{$key} = $bdata->{$key}; + if ($data->{constrainttype} eq 'o') { + $query = ' + SELECT biblioitemnumber + FROM reserveconstraints + WHERE biblionumber = ? + AND borrowernumber = ? + AND reservedate = ? + '; + my $csth = $dbh->prepare($query); + $csth->execute( $data->{biblionumber}, $data->{borrowernumber}, + $data->{reservedate}, ); + + my @bibitemno; + while ( my $bibitemnos = $csth->fetchrow_array ) { + push( @bibitemno, $bibitemnos ); # FIXME: inefficient: use fetchall_arrayref + } + my $count = scalar @bibitemno; + + # if we have two or more different specific itemtypes + # reserved by same person on same day + my $bdata; + if ( $count > 1 ) { + $bdata = GetBiblioItemData( $bibitemno[$i] ); + $i++; + } + else { + # Look up the book we just found. + $bdata = GetBiblioItemData( $bibitemno[0] ); + } + # Add the results of this latest search to the current + # results. + # FIXME - An 'each' would probably be more efficient. + foreach my $key ( keys %$bdata ) { + $data->{$key} = $bdata->{$key}; + } } push @results, $data; } -- 2.39.2