Bug 32922: (follow-up) Fix two additional occurences
[koha-ffzg.git] / opac / opac-basket.pl
index 013cbab..3109633 100755 (executable)
@@ -21,21 +21,18 @@ use CGI qw ( -utf8 );
 
 use C4::Koha;
 use C4::Biblio qw(
-    GetBiblioData
     GetFrameworkCode
-    GetMarcBiblio
     GetMarcSeries
     GetMarcSubjects
     GetMarcUrls
 );
-use C4::Items qw( GetHiddenItemnumbers GetItemsInfo );
-use C4::Circulation qw( GetTransfers );
 use C4::Auth qw( get_template_and_user );
 use C4::Output qw( output_html_with_http_headers );
 use Koha::RecordProcessor;
 use Koha::CsvProfiles;
 use Koha::AuthorisedValues;
 use Koha::Biblios;
+use Koha::Items;
 
 my $query = CGI->new;
 
@@ -65,12 +62,7 @@ if (C4::Context->preference('TagsEnabled')) {
        }
 }
 
-my $borcat = q{};
-if ( C4::Context->preference('OpacHiddenItemsExceptions') ) {
-    # we need to fetch the borrower info here, so we can pass the category
-    my $patron = Koha::Patrons->find($borrowernumber);
-    $borcat = $patron ? $patron->categorycode : $borcat;
-}
+my $logged_in_user = Koha::Patrons->find($borrowernumber);
 
 my $record_processor = Koha::RecordProcessor->new({ filters => 'ViewPolicy' });
 my $rules = C4::Context->yaml_preference('OpacHiddenItems');
@@ -78,13 +70,12 @@ my $rules = C4::Context->yaml_preference('OpacHiddenItems');
 foreach my $biblionumber ( @bibs ) {
     $template->param( biblionumber => $biblionumber );
 
-    my $dat              = &GetBiblioData($biblionumber);
-    next unless $dat;
-    my $biblio           = Koha::Biblios->find( $biblionumber );
+    my $biblio           = Koha::Biblios->find( $biblionumber ) or next;
+    my $dat              = $biblio->unblessed;
 
     # No filtering on the item records needed for the record itself
     # since the only reason item information is grabbed is because of branchcodes.
-    my $record = &GetMarcBiblio({ biblionumber => $biblionumber });
+    my $record = $biblio->metadata->record;
     my $framework = &GetFrameworkCode( $biblionumber );
     $record_processor->options({
         interface => 'opac',
@@ -92,43 +83,20 @@ foreach my $biblionumber ( @bibs ) {
     });
     $record_processor->process($record);
     next unless $record;
-    my $marcnotesarray   = $biblio->get_marc_notes({ marcflavour => $marcflavour, opac => 1 });
-    my $marcauthorsarray = $biblio->get_marc_authors;
+    my $marcnotesarray   = $biblio->get_marc_notes({ opac => 1 });
+    my $marcauthorsarray = $biblio->get_marc_contributors;
     my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
     my $marcseriesarray  = GetMarcSeries  ($record,$marcflavour);
     my $marcurlsarray    = GetMarcUrls    ($record,$marcflavour);
 
-    # grab all the items...
-    my @all_items        = &GetItemsInfo( $biblionumber );
-
-    # determine which ones should be hidden / visible
-    my @hidden_items     = GetHiddenItemnumbers({ items => \@all_items, borcat => $borcat });
-
     # If every item is hidden, then the biblio should be hidden too.
     next
       if $biblio->hidden_in_opac({ rules => $rules });
 
-    # copy the visible ones into the items array.
-    my @items;
-    foreach my $item (@all_items) {
-
-            # next if item is hidden
-            next  if  grep  { $item->{itemnumber} eq $_  } @hidden_items ;
-
-            my $reserve_status = C4::Reserves::GetReserveStatus($item->{itemnumber});
-            if( $reserve_status eq "Waiting"){ $item->{'waiting'} = 1; }
-            if( $reserve_status eq "Reserved"){ $item->{'onhold'} = 1; }
-            push @items, $item;
-    }
-
     my $hasauthors = 0;
     if($dat->{'author'} || @$marcauthorsarray) {
       $hasauthors = 1;
     }
-    my $collections =
-      { map { $_->{authorised_value} => $_->{opac_description} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => $dat->{frameworkcode}, kohafield => 'items.ccode' } ) };
-    my $shelflocations =
-      { map { $_->{authorised_value} => $_->{opac_description} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => $dat->{frameworkcode}, kohafield => 'items.location' } ) };
 
        # COinS format FIXME: for books Only
         my $fmt = substr $record->leader(), 6,2;
@@ -140,36 +108,19 @@ foreach my $biblionumber ( @bibs ) {
         $dat->{'even'} = 1;
     }
 
-    for my $itm (@items) {
-        if ($itm->{'location'}){
-            $itm->{'location_opac'} = $shelflocations->{$itm->{'location'} };
-        }
-        my ( $transfertwhen, $transfertfrom, $transfertto ) = GetTransfers($itm->{itemnumber});
-        if ( defined( $transfertwhen ) && $transfertwhen ne '' ) {
-             $itm->{transfertwhen} = $transfertwhen;
-             $itm->{transfertfrom} = $transfertfrom;
-             $itm->{transfertto}   = $transfertto;
-        }
-    }
     $num++;
     $dat->{biblionumber} = $biblionumber;
-    $dat->{ITEM_RESULTS}   = \@items;
+    $dat->{ITEM_RESULTS}   = $biblio->items->filter_by_visible_in_opac({ patron => $logged_in_user });
     $dat->{MARCNOTES}      = $marcnotesarray;
     $dat->{MARCSUBJCTS}    = $marcsubjctsarray;
     $dat->{MARCAUTHORS}    = $marcauthorsarray;
     $dat->{MARCSERIES}  = $marcseriesarray;
     $dat->{MARCURLS}    = $marcurlsarray;
     $dat->{HASAUTHORS}  = $hasauthors;
+    my ( $host, $relatedparts ) = $biblio->get_marc_host;
+    $dat->{HOSTITEMENTRIES} = $host;
+    $dat->{RELATEDPARTS} = $relatedparts;
 
-    if ( C4::Context->preference("BiblioDefaultView") eq "normal" ) {
-        $dat->{dest} = "opac-detail.pl";
-    }
-    elsif ( C4::Context->preference("BiblioDefaultView") eq "marc" ) {
-        $dat->{dest} = "opac-MARCdetail.pl";
-    }
-    else {
-        $dat->{dest} = "opac-ISBDdetail.pl";
-    }
     push( @results, $dat );
 }
 
@@ -178,11 +129,8 @@ my $resultsarray = \@results;
 # my $itemsarray=\@items;
 
 $template->param(
-    csv_profiles => [
-        Koha::CsvProfiles->search(
-            { type => 'marc', used_for => 'export_records', staff_only => 0 }
-        )
-    ],
+    csv_profiles => Koha::CsvProfiles->search(
+        { type => 'marc', used_for => 'export_records', staff_only => 0 } ),
     bib_list => $bib_list,
     BIBLIO_RESULTS => $resultsarray,
 );