Bug 6280 : Don't generate invalid SQL in GetPendingIssues

Change to parameter list in GetPendingIssues made it
callable by an empty list resulting in invalid sql being
sent to server. As this was occuring on most issues error log
was filling up. Put safeguard in the routine
Also don't bother calling when you have no need

Some of the processing was needlessly obscure

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
This commit is contained in:
Colin Campbell 2011-04-28 14:39:45 +01:00 committed by Chris Cormack
parent df78c5decd
commit c435c8c7d1
3 changed files with 25 additions and 11 deletions

View File

@ -1032,13 +1032,19 @@ The keys include C<biblioitems> fields except marc and marcxml.
#'
sub GetPendingIssues {
my (@borrowernumbers) = @_;
my @borrowernumbers = @_;
unless (@borrowernumbers ) { # return a ref_to_array
return \@borrowernumbers; # to not cause surprise to caller
}
# Borrowers part of the query
my $bquery = '';
for (my $i = 0; $i < @borrowernumbers; $i++) {
$bquery .= " borrowernumber = ?";
$bquery .= " OR" if ($i < (scalar(@borrowernumbers) - 1));
$bquery .= ' borrowernumber = ?';
if ($i < $#borrowernumbers ) {
$bquery .= ' OR';
}
}
# must avoid biblioitems.* to prevent large marc and marcxml fields from killing performance
@ -1079,9 +1085,10 @@ sub GetPendingIssues {
$sth->execute(@borrowernumbers);
my $data = $sth->fetchall_arrayref({});
my $today = C4::Dates->new->output('iso');
foreach (@$data) {
$_->{date_due} or next;
($_->{date_due} lt $today) and $_->{overdue} = 1;
foreach (@{$data}) {
if ($_->{date_due} and $_->{date_due} lt $today) {
$_->{overdue} = 1;
}
}
return $data;
}

View File

@ -463,8 +463,11 @@ if ($borrower) {
#push @borrowernumbers, $borrower->{'borrowernumber'};
# get each issue of the borrower & separate them in todayissues & previous issues
my ($issueslist) = GetPendingIssues($borrower->{'borrowernumber'});
my ($relissueslist) = GetPendingIssues(@relborrowernumbers);
my $issueslist = GetPendingIssues($borrower->{'borrowernumber'});
my $relissueslist = [];
if ( @relborrowernumbers ) {
$relissueslist = GetPendingIssues(@relborrowernumbers);
}
build_issue_data($issueslist, 0);
build_issue_data($relissueslist, 1);
@ -477,6 +480,7 @@ if ($borrower) {
else {
@todaysissues = sort { $b->{'timestamp'} cmp $a->{'timestamp'} } @todaysissues;
}
if ( C4::Context->preference( "previousIssuesDefaultSortOrder" ) eq 'asc' ){
@previousissues = sort { $a->{'date_due'} cmp $b->{'date_due'} } @previousissues;
}

View File

@ -236,9 +236,12 @@ if ( C4::Context->preference('OPACPrivacy') ) {
#
my @borrowernumbers = GetMemberRelatives($borrowernumber);
my $issue = GetPendingIssues($borrowernumber);
my $relissue = GetPendingIssues(@borrowernumbers);
my $issuecount = scalar(@$issue);
my $relissuecount = scalar(@$relissue);
my $relissue = [];
if ( @borrowernumbers ) {
$relissue = GetPendingIssues(@borrowernumbers);
}
my $issuecount = @{$issue};
my $relissuecount = @{$relissue};
my $roaddetails = &GetRoadTypeDetails( $data->{'streettype'} );
my $today = POSIX::strftime("%Y-%m-%d", localtime); # iso format
my @issuedata;