From d7a320816b49774518bea2f2ffeaa4bd54da97aa Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Fri, 26 Apr 2013 16:02:19 +0200 Subject: [PATCH] [SIGNED-OFF] Bug 10129: Babeltheque does not depend on COinSinOPACResults Content-Type: text/plain; charset="utf-8" This patch groups all loops on the new_results array into one. It is useless to loop on the same results array several times. Test plan: Quite hard to test all cases. This patch deals with 5 sysprefs: COinSinOPACResults, Babeltheque, TagsEnabled, TagsShowOnList and OpacStarRatings. Try to enable/disable all of them and verify there is no difference with and without this patch. The only different will be: The Babeltheque information should be displayed even if the COinSinOPACResults syspref is disabled. Signed-off-by: Owen Leonard This revised patch works fine for me, thanks. --- opac/opac-search.pl | 64 +++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/opac/opac-search.pl b/opac/opac-search.pl index 363a11e..57e520c 100755 --- a/opac/opac-search.pl +++ b/opac/opac-search.pl @@ -556,52 +556,50 @@ for (my $i=0;$i<@servers;$i++) { $results_hashref->{$server}->{"RECORDS"}); } - # must define a value for size if not present in DB - # in order to avoid problems generated by the default size value in TT - foreach my $line (@newresults) { - if ( not exists $line->{'size'} ) { $line->{'size'} = "" } + foreach my $res (@newresults) { + + # must define a value for size if not present in DB + # in order to avoid problems generated by the default size value in TT + if ( not exists $res->{'size'} ) { $res->{'size'} = "" } # while we're checking each line, see if item is in the cart - if ( grep {$_ eq $line->{'biblionumber'}} @cart_list) { - $line->{'incart'} = 1; + if ( grep {$_ eq $res->{'biblionumber'}} @cart_list) { + $res->{'incart'} = 1; } - } - - my $tag_quantity; - if (C4::Context->preference('TagsEnabled') and - $tag_quantity = C4::Context->preference('TagsShowOnList')) { - foreach (@newresults) { - my $bibnum = $_->{biblionumber} or next; - $_->{itemsissued} = CountItemsIssued( $bibnum ); - $_ ->{'TagLoop'} = get_tags({biblionumber=>$bibnum, approved=>1, 'sort'=>'-weight', - limit=>$tag_quantity }); + if (C4::Context->preference('COinSinOPACResults')) { + my $record = GetMarcBiblio($res->{'biblionumber'}); + $res->{coins} = GetCOinSBiblio($record); } - } - - if (C4::Context->preference('COinSinOPACResults')) { - foreach (@newresults) { - my $record = GetMarcBiblio($_->{'biblionumber'}); - $_->{coins} = GetCOinSBiblio($record); - if ( C4::Context->preference( "Babeltheque" ) and $_->{normalized_isbn} ) { - my $isbn = Business::ISBN->new( $_->{normalized_isbn} ); - next if not $isbn; + if ( C4::Context->preference( "Babeltheque" ) and $res->{normalized_isbn} ) { + if( my $isbn = Business::ISBN->new( $res->{normalized_isbn} ) ) { $isbn = $isbn->as_isbn13->as_string; $isbn =~ s/-//g; my $social_datas = C4::SocialData::get_data( $isbn ); - next if not $social_datas; - for my $key ( keys %$social_datas ) { - $_->{$key} = $$social_datas{$key}; - if ( $key eq 'score_avg' ){ - $_->{score_int} = sprintf("%.0f", $$social_datas{score_avg} ); + if ( $social_datas ) { + for my $key ( keys %$social_datas ) { + $res->{$key} = $$social_datas{$key}; + if ( $key eq 'score_avg' ){ + $res->{score_int} = sprintf("%.0f", $$social_datas{score_avg} ); + } } } } } - } + if (C4::Context->preference('TagsEnabled') and + C4::Context->preference('TagsShowOnList')) { + if ( my $bibnum = $res->{biblionumber} ) { + $res->{itemsissued} = CountItemsIssued( $bibnum ); + $res->{'TagLoop'} = get_tags({ + biblionumber => $bibnum, + approved => 1, + sort => '-weight', + limit => C4::Context->preference('TagsShowOnList') + }); + } + } - if ( C4::Context->preference('OpacStarRatings') eq 'all' ) { - foreach my $res (@newresults) { + if ( C4::Context->preference('OpacStarRatings') eq 'all' ) { my $rating = GetRating( $res->{'biblionumber'}, $borrowernumber ); $res->{'rating_value'} = $rating->{'rating_value'}; $res->{'rating_total'} = $rating->{'rating_total'}; -- 1.7.9.5