Bug 766: remove CGI::scrolling_list from request.pl
[koha_fer] / opac / opac-search.pl
index 677b7c2..dfe651e 100755 (executable)
@@ -60,15 +60,18 @@ use Business::ISBN;
 my $DisplayMultiPlaceHold = C4::Context->preference("DisplayMultiPlaceHold");
 # create a new CGI object
 # FIXME: no_undef_params needs to be tested
-use CGI qw( -no_undef_params -utf8 );
+use CGI qw('-no_undef_params');
 my $cgi = new CGI;
 
 my $branch_group_limit = $cgi->param("branch_group_limit");
 if ( $branch_group_limit ) {
-    if ( $branch_group_limit =~ /^multibranchlimit/ ) {
+    if ( $branch_group_limit =~ /^multibranchlimit-/ ) {
+        # For search groups we are going to convert this branch_group_limit CGI
+        # parameter into a multibranchlimit CGI parameter for the purposes of
+        # actually performing the query
         $cgi->param(
             -name => 'multibranchlimit',
-            -values => [ ( split( 'multibranchlimit-', $branch_group_limit ) )[1] ]
+            -values => substr($branch_group_limit, 17)
         );
     } else {
         $cgi->append(
@@ -403,7 +406,8 @@ my @limits = $cgi->param('limit');
 @limits = map { uri_unescape($_) } @limits;
 
 if($params->{'multibranchlimit'}) {
-    push @limits, '('.join( " or ", map { "branch: $_ " } @{ GetBranchesInCategory( $params->{'multibranchlimit'} ) } ).')';
+    my $multibranch = '('.join( " or ", map { "branch: $_ " } @{ GetBranchesInCategory( $params->{'multibranchlimit'} ) } ).')';
+    push @limits, $multibranch if ($multibranch ne  '()');
 }
 
 my $available;
@@ -556,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'};
@@ -652,7 +654,7 @@ for (my $i=0;$i<@servers;$i++) {
                 $newsearchcookie = $cgi->cookie(
                             -name => 'KohaOpacRecentSearches',
                             # We uri_escape the whole freezed structure so we're sure we won't have any encoding problems
-                            -value => uri_escape_utf8(freeze(\@recentSearches)),
+                            -value =>freeze(\@recentSearches),
                             -expires => ''
                 );
                 $cookie = [$cookie, $newsearchcookie];