Bug 32925: Add test
[koha-ffzg.git] / opac / opac-tags.pl
index 63169e8..43f156d 100755 (executable)
@@ -34,13 +34,12 @@ use Modern::Perl;
 
 use CGI qw ( -utf8 );
 use CGI::Cookie; # need to check cookies before having CGI parse the POST request
+use Array::Utils qw( array_minus );
 
 use C4::Auth qw( check_cookie_auth get_template_and_user );
 use C4::Context;
 use C4::Output qw( output_with_http_headers is_ajax output_html_with_http_headers );
 use C4::Scrubber;
-use C4::Biblio qw( GetMarcBiblio );
-use C4::Items qw( GetHiddenItemnumbers GetItemsInfo );
 use C4::Tags qw(
     add_tag
     get_approval_rows
@@ -49,6 +48,7 @@ use C4::Tags qw(
     stratify_tags
 );
 use C4::XSLT qw( XSLTParse4Display );
+use Koha::Biblios;
 
 
 use Koha::Logger;
@@ -226,11 +226,9 @@ if ($is_ajax) {
 
 my $results = [];
 my $my_tags = [];
-my $borcat  = q{};
 
 if ($loggedinuser) {
     my $patron = Koha::Patrons->find( { borrowernumber => $loggedinuser } );
-    $borcat = $patron ? $patron->categorycode : $borcat;
     my $rules = C4::Context->yaml_preference('OpacHiddenItems');
     my $should_hide = ( $rules ) ? 1 : 0;
     $my_tags = get_tag_rows({borrowernumber=>$loggedinuser});
@@ -252,21 +250,20 @@ if ($loggedinuser) {
     foreach my $tag (@$my_tags) {
         $tag->{visible} = 0;
         my $biblio = Koha::Biblios->find( $tag->{biblionumber} );
-        my $record = &GetMarcBiblio({
-            biblionumber => $tag->{biblionumber},
-            embed_items  => 1,
-            opac         => 1,
-            borcat       => $borcat });
+        my $record = $biblio->metadata->record(
+            {
+                embed_items => 1,
+                opac        => 1,
+                patron      => $patron,
+            }
+        );
         next unless $record;
-        my $hidden_items = undef;
-        my @hidden_itemnumbers;
-        my @all_items;
+        my @hidden_items;
         if ($should_hide) {
-            @all_items = GetItemsInfo( $tag->{biblionumber} );
-            @hidden_itemnumbers = GetHiddenItemnumbers({
-                items => \@all_items,
-                borcat => $borcat });
-            $hidden_items = \@hidden_itemnumbers;
+            my $items = $biblio->items->search_ordered;
+            my @all_itemnumbers = $items->get_column('itemnumber');
+            my @items_to_show = $items->filter_by_visible_in_opac({ opac => 1, patron => $patron })->as_list;
+            @hidden_items = array_minus( @all_itemnumbers, @items_to_show );
         }
         next
           if (
@@ -292,10 +289,10 @@ if ($loggedinuser) {
             {
                 biblionumber   => $tag->{biblionumber},
                 record         => $record,
-                xsl_filename   => 'OPACXSLTResultsDisplay',
+                xsl_syspref    => 'OPACXSLTResultsDisplay',
                 fix_amps       => 1,
-                hidden_items   => $hidden_items,
-                xslt_variables => $variables
+                hidden_items   => \@hidden_items,
+                xslt_variables => $variables,
             }
         );