Bugzilla – Attachment 5541 Details for
Bug 6801
Patron details page slow to load when many checkouts present
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Second Proposed Patch
0002-Bug-6801-member-details-page-taking-long-time-to-loa.patch (text/plain), 10.24 KB, created by
Ian Walls
on 2011-09-22 15:03:37 UTC
(
hide
)
Description:
Second Proposed Patch
Filename:
MIME Type:
Creator:
Ian Walls
Created:
2011-09-22 15:03:37 UTC
Size:
10.24 KB
patch
obsolete
>From d618ee6b8f93e90f77da75dddca807310e0b0d03 Mon Sep 17 00:00:00 2001 >From: Ian Walls <ian.walls@bywatersolutions.com> >Date: Thu, 22 Sep 2011 07:41:23 -0400 >Subject: [PATCH 2/2] Bug 6801: member details page taking long time to load when many checkouts present > >This patch removes the call to GetMemberDetails in build_issue_data; this heavy-weight >subroutine was being run for every single item a patron (or their relatives) have checked out. >Instead, the borrowers first name, surname and cardnumber are added to the GetPendingIssues query. >I believe this is reasonable since GetPendingIssues can now return issues for multiple borrowers. > >Also corrects the $borrowernumber used for GetIssuesCharges and CanItemBeRenewed; was using the borrower whose >page we were on, NOT the borrower of that specific item (which would be different in the Relatives Checkouts tab). > >Template calls to [% scope.borrowername %] are now broken up into [% scope.firstname %] [% scope.surname %]. >--- > C4/Members.pm | 6 +++++- > circ/circulation.pl | 8 ++------ > .../prog/en/modules/circ/circulation.tt | 10 +++++----- > .../prog/en/modules/members/moremember.tt | 2 +- > members/moremember.pl | 8 ++------ > 5 files changed, 15 insertions(+), 19 deletions(-) > >diff --git a/C4/Members.pm b/C4/Members.pm >index 8d4a6c5..2795de1 100644 >--- a/C4/Members.pm >+++ b/C4/Members.pm >@@ -1043,7 +1043,7 @@ sub GetPendingIssues { > # Borrowers part of the query > my $bquery = ''; > for (my $i = 0; $i < @borrowernumbers; $i++) { >- $bquery .= ' borrowernumber = ?'; >+ $bquery .= ' issues.borrowernumber = ?'; > if ($i < $#borrowernumbers ) { > $bquery .= ' OR'; > } >@@ -1070,6 +1070,9 @@ sub GetPendingIssues { > biblioitems.volumedesc, > biblioitems.lccn, > biblioitems.url, >+ borrowers.firstname, >+ borrowers.surname, >+ borrowers.cardnumber, > issues.timestamp AS timestamp, > issues.renewals AS renewals, > issues.borrowernumber AS borrowernumber, >@@ -1078,6 +1081,7 @@ sub GetPendingIssues { > LEFT JOIN items ON items.itemnumber = issues.itemnumber > LEFT JOIN biblio ON items.biblionumber = biblio.biblionumber > LEFT JOIN biblioitems ON items.biblioitemnumber = biblioitems.biblioitemnumber >+ LEFT JOIN borrowers ON issues.borrowernumber = borrowers.borrowernumber > WHERE > $bquery > ORDER BY issues.issuedate" >diff --git a/circ/circulation.pl b/circ/circulation.pl >index fff32a2..8c28395 100755 >--- a/circ/circulation.pl >+++ b/circ/circulation.pl >@@ -418,19 +418,15 @@ sub build_issue_data { > foreach my $it ( @$issueslist ) { > my $itemtypeinfo = getitemtypeinfo( (C4::Context->preference('item-level_itypes')) ? $it->{'itype'} : $it->{'itemtype'} ); > >- # Getting borrower details >- my $memberdetails = GetMemberDetails($it->{'borrowernumber'}); >- $it->{'borrowername'} = $memberdetails->{'firstname'} . " " . $memberdetails->{'surname'}; >- $it->{'cardnumber'} = $memberdetails->{'cardnumber'}; > # set itemtype per item-level_itype syspref - FIXME this is an ugly hack > $it->{'itemtype'} = ( C4::Context->preference( 'item-level_itypes' ) ) ? $it->{'itype'} : $it->{'itemtype'}; > > ($it->{'charge'}, $it->{'itemtype_charge'}) = GetIssuingCharges( >- $it->{'itemnumber'}, $borrower->{'borrowernumber'} >+ $it->{'itemnumber'}, $it->{'borrowernumber'} > ); > $it->{'charge'} = sprintf("%.2f", $it->{'charge'}); > my ($can_renew, $can_renew_error) = CanBookBeRenewed( >- $borrower->{'borrowernumber'},$it->{'itemnumber'} >+ $it->{'borrowernumber'},$it->{'itemnumber'} > ); > $it->{"renew_error_${can_renew_error}"} = 1 if defined $can_renew_error; > my ( $restype, $reserves ) = CheckReserves( $it->{'itemnumber'} ); >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >index d6b2b22..4f56504 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >@@ -701,7 +701,7 @@ No patron matched <span class="ex">[% message %]</span> > <td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% todayissue.biblionumber %]&type=intra"><strong>[% todayissue.title |html %]</strong></a>[% IF ( todayissue.author ) %], by [% todayissue.author %][% END %][% IF ( todayissue.itemnotes ) %]- <span class="circ-hlt">[% todayissue.itemnotes %]</span>[% END %] <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% todayissue.biblionumber %]&itemnumber=[% todayissue.itemnumber %]#item[% todayissue.itemnumber %]">[% todayissue.barcode %]</a></td> > <td>[% UNLESS ( noItemTypeImages ) %] [% IF ( todayissue.itemtype_image ) %]<img src="[% todayissue.itemtype_image %]" alt="" />[% END %][% END %][% todayissue.itemtype %]</td> > <td>[% todayissue.checkoutdate %]</td> >- [% IF ( todayissue.multiple_borrowers ) %]<td>[% todayissue.borrowername %]</td>[% END %] >+ [% IF ( todayissue.multiple_borrowers ) %]<td>[% todayissue.firstname %] [% todayissue.surname %]</td>[% END %] > <td>[% todayissue.issuingbranchname %]</td> > <td>[% todayissue.itemcallnumber %]</td> > <td>[% todayissue.charge %]</td> >@@ -776,7 +776,7 @@ No patron matched <span class="ex">[% message %]</span> > [% previssue.itemtype %] > </td> > <td>[% previssue.displaydate %]</td> >- [% IF ( previssue.multiple_borrowers ) %]<td>[% previssue.borrowername %]</td>[% END %] >+ [% IF ( previssue.multiple_borrowers ) %]<td>[% previssue.firstname %] [% previssue.surname %]</td>[% END %] > <td>[% previssue.issuingbranchname %]</td> > <td>[% previssue.itemcallnumber %]</td> > <td>[% previssue.charge %]</td> >@@ -885,7 +885,7 @@ No patron matched <span class="ex">[% message %]</span> > <td>[% relissue.issuingbranchname %]</td> > <td>[% relissue.itemcallnumber %]</td> > <td>[% relissue.charge %]</td> >- <td>[% relissue.replacementprice %]</td><td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% relissue.borrowernumber %]">[% relissue.borrowername %] ([% relissue.cardnumber %])</a></td> >+ <td>[% relissue.replacementprice %]</td><td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% relissue.borrowernumber %]">[% relissue.firstname %] [% relissue.surname %] ([% relissue.cardnumber %])</a></td> > </tr> > [% END %] <!-- /loop relissues --> > <!-- /if relissues -->[% END %] >@@ -905,10 +905,10 @@ No patron matched <span class="ex">[% message %]</span> > <td>[% relprevissue.displaydate %]</td> > <td>[% relprevissue.issuingbranchname %]</td> > <td>[% relprevissue.itemcallnumber %]</td> >- [% IF ( relprevissue.multiple_borrowers ) %]<td>[% relprevissue.borrowername %]</td>[% END %] >+ [% IF ( relprevissue.multiple_borrowers ) %]<td>[% relprevissue.firstname %] [% relprevissue.surname %]</td>[% END %] > <td>[% relprevissue.charge %]</td> > <td>[% relprevissue.replacementprice %]</td> >- <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% relprevissue.borrowernumber %]">[% relprevissue.borrowername %] ([% relprevissue.cardnumber %])</a></td> >+ <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% relprevissue.borrowernumber %]">[% relprevissue.firstname %] [% relprevissue.surname %] ([% relprevissue.cardnumber %])</a></td> > > </tr> > <!-- /loop relprevissue -->[% END %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >index 84a9c48..3eb42f3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >@@ -566,7 +566,7 @@ function validate1(date) { > <td>[% relissueloo.itemcallnumber %]</td> > <td>[% relissueloo.charge %]</td> > <td>[% relissueloo.replacementprice %]</td> >- <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% relissueloo.borrowernumber %]">[% relissueloo.borrowername %] ([% relissueloo.cardnumber %])</a></td> >+ <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% relissueloo.borrowernumber %]">[% relissueloo.firstname %] [% relissueloo.surname %] ([% relissueloo.cardnumber %])</a></td> > </tr> > [% END %] > </tbody> >diff --git a/members/moremember.pl b/members/moremember.pl >index a76652f..b800199 100755 >--- a/members/moremember.pl >+++ b/members/moremember.pl >@@ -259,10 +259,6 @@ sub build_issue_data { > my $localissue; > > for ( my $i = 0 ; $i < $issuecount ; $i++ ) { >- # Getting borrower details >- my $memberdetails = GetMemberDetails($issue->[$i]{'borrowernumber'}); >- $issue->[$i]{'borrowername'} = $memberdetails->{'firstname'} . " " . $memberdetails->{'surname'}; >- $issue->[$i]{'cardnumber'} = $memberdetails->{'cardnumber'}; > my $datedue = $issue->[$i]{'date_due'}; > my $issuedate = $issue->[$i]{'issuedate'}; > $issue->[$i]{'date_due'} = C4::Dates->new($issue->[$i]{'date_due'}, 'iso')->output('syspref'); >@@ -306,7 +302,7 @@ sub build_issue_data { > > #find the charge for an item > my ( $charge, $itemtype ) = >- GetIssuingCharges( $issue->[$i]{'itemnumber'}, $borrowernumber ); >+ GetIssuingCharges( $issue->[$i]{'itemnumber'}, $issue->[$i]{'borrowernumber'} ); > > my $itemtypeinfo = getitemtypeinfo($itemtype); > $row{'itemtype_description'} = $itemtypeinfo->{description}; >@@ -314,7 +310,7 @@ sub build_issue_data { > > $row{'charge'} = sprintf( "%.2f", $charge ); > >- my ( $renewokay,$renewerror ) = CanBookBeRenewed( $borrowernumber, $issue->[$i]{'itemnumber'}, $override_limit ); >+ my ( $renewokay,$renewerror ) = CanBookBeRenewed( $issue->[$i]{'borrowernumber'}, $issue->[$i]{'itemnumber'}, $override_limit ); > $row{'norenew'} = !$renewokay; > $row{'can_confirm'} = ( !$renewokay && $renewerror ne 'on_reserve' ); > $row{"norenew_reason_$renewerror"} = 1 if $renewerror; >-- >1.7.4.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 6801
:
5244
|
5541
|
5544
|
5598