Bug 10129: Babeltheque does not depend on COinSinOPACResults

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 <oleonard@myacpl.org>

This revised patch works fine for me, thanks.

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Verified following system preferences still work as expected:
- COinSinOPACResults on/off
- TagsEnabled, TagsShowOnList, TagsInputOnList on/off
- OpacStarRatings

Couldn't test Babeltheque functionality as this requires an account.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
This commit is contained in:
Jonathan Druart 2013-04-26 16:02:19 +02:00 committed by Galen Charlton
parent 27a1017e44
commit 98dae69c71
1 changed files with 31 additions and 33 deletions

View File

@ -560,52 +560,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'};