| Lines 99-104
          use Koha::Caches;
      
      
        Link Here | 
        
          | 99 | use Koha::Authority::Types; | 99 | use Koha::Authority::Types; | 
        
          | 100 | use Koha::Acquisition::Currencies; | 100 | use Koha::Acquisition::Currencies; | 
        
          | 101 | use Koha::Biblio::Metadatas; | 101 | use Koha::Biblio::Metadatas; | 
            
              |  |  | 102 | use Koha::MetadataRecord::Authority; | 
        
          | 102 | use Koha::Holds; | 103 | use Koha::Holds; | 
        
          | 103 | use Koha::ItemTypes; | 104 | use Koha::ItemTypes; | 
        
          | 104 | use Koha::Plugins; | 105 | use Koha::Plugins; | 
  
    | Lines 1150-1165
          sub GetMarcSubfieldStructureFromKohaField {
      
      
        Link Here | 
        
          | 1150 | =head2 GetMarcBiblio | 1151 | =head2 GetMarcBiblio | 
        
          | 1151 |  | 1152 |  | 
        
          | 1152 |   my $record = GetMarcBiblio({ | 1153 |   my $record = GetMarcBiblio({ | 
          
            
              | 1153 |       biblionumber => $biblionumber, | 1154 |       biblionumber		=> $biblionumber, | 
            
              | 1154 |       embed_items  => $embeditems, | 1155 |       embed_items		=> $embeditems, | 
            
              | 1155 |       opac         => $opac, | 1156 |       embed_seefromheadings	=> $embedseefromheadings, | 
            
              | 1156 |       borcat       => $patron_category }); | 1157 |       opac			=> $opac, | 
            
              |  |  | 1158 |       borcat			=> $patron_category }); | 
        
          | 1157 |  | 1159 |  | 
        
          | 1158 | Returns MARC::Record representing a biblio record, or C<undef> if the | 1160 | Returns MARC::Record representing a biblio record, or C<undef> if the | 
        
          | 1159 | biblionumber doesn't exist. | 1161 | biblionumber doesn't exist. | 
        
          | 1160 |  | 1162 |  | 
          
            
              | 1161 | Both embed_items and opac are optional. | 1163 | embed_seefromheadings, embed_items and opac are optional. | 
        
          | 1162 | If embed_items is passed and is 1, items are embedded. | 1164 | If embed_items is passed and is 1, items are embedded. | 
            
              |  |  | 1165 | If embed_seefromheading is passed and is 1, see-from headings are embedded. | 
        
          | 1163 | If opac is passed and is 1, the record is filtered as needed. | 1166 | If opac is passed and is 1, the record is filtered as needed. | 
        
          | 1164 |  | 1167 |  | 
        
          | 1165 | =over 4 | 1168 | =over 4 | 
  
    | Lines 1195-1204
          sub GetMarcBiblio {
      
      
        Link Here | 
        
          | 1195 |         return; | 1198 |         return; | 
        
          | 1196 |     } | 1199 |     } | 
        
          | 1197 |  | 1200 |  | 
          
            
              | 1198 |     my $biblionumber = $params->{biblionumber}; | 1201 |     my $biblionumber         = $params->{biblionumber}; | 
            
              | 1199 |     my $embeditems   = $params->{embed_items} || 0; | 1202 |     my $embeditems           = $params->{embed_items} || 0; | 
            
              | 1200 |     my $opac         = $params->{opac} || 0; | 1203 |     my $embedseefromheadings = $params->{embed_seefromheadings} || 0; | 
            
              | 1201 |     my $borcat       = $params->{borcat} // q{}; | 1204 |     my $opac                 = $params->{opac} || 0; | 
            
              |  |  | 1205 |     my $borcat               = $params->{borcat} // q{}; | 
        
          | 1202 |  | 1206 |  | 
        
          | 1203 |     if (not defined $biblionumber) { | 1207 |     if (not defined $biblionumber) { | 
        
          | 1204 |         carp 'GetMarcBiblio called with undefined biblionumber'; | 1208 |         carp 'GetMarcBiblio called with undefined biblionumber'; | 
  
    | Lines 1232-1237
          sub GetMarcBiblio {
      
      
        Link Here | 
        
          | 1232 |             opac         => $opac, | 1236 |             opac         => $opac, | 
        
          | 1233 |             borcat       => $borcat }) | 1237 |             borcat       => $borcat }) | 
        
          | 1234 |           if ($embeditems); | 1238 |           if ($embeditems); | 
            
              |  |  | 1239 |         C4::Biblio::EmbedSeeFromHeadings({ | 
            
              | 1240 |             marc_record  => $record }) | 
            
              | 1241 |           if ($embedseefromheadings); | 
        
          | 1235 |  | 1242 |  | 
        
          | 1236 |         return $record; | 1243 |         return $record; | 
        
          | 1237 |     } | 1244 |     } | 
  
    | Lines 2680-2685
          sub EmbedItemsInMarcBiblio {
      
      
        Link Here | 
        
          | 2680 |     $marc->append_fields(@item_fields); | 2687 |     $marc->append_fields(@item_fields); | 
        
          | 2681 | } | 2688 | } | 
        
          | 2682 |  | 2689 |  | 
            
              |  |  | 2690 | =head2 EmbedSeeFromHeadings | 
            
              | 2691 |  | 
            
              | 2692 |     EmbedSeeFromHeadings({ | 
            
              | 2693 |         marc_record  => $record }); | 
            
              | 2694 |  | 
            
              | 2695 | Given a MARC::Record object containing a bib record, | 
            
              | 2696 | modify it to include see-from headings. | 
            
              | 2697 |  | 
            
              | 2698 | =cut | 
            
              | 2699 |  | 
            
              | 2700 | sub EmbedSeeFromHeadings { | 
            
              | 2701 |     my ($params) = @_; | 
            
              | 2702 |     my $record = $params->{marc_record}; | 
            
              | 2703 |  | 
            
              | 2704 |     my ($item_tag) = GetMarcFromKohaField("items.itemnumber", ''); | 
            
              | 2705 |     $item_tag ||= ''; | 
            
              | 2706 |  | 
            
              | 2707 |     foreach my $field ( $record->fields() ) { | 
            
              | 2708 |         next if $field->is_control_field(); | 
            
              | 2709 |         next if $field->tag() eq $item_tag; | 
            
              | 2710 |         my $authid = $field->subfield('9'); | 
            
              | 2711 |  | 
            
              | 2712 |         next unless $authid; | 
            
              | 2713 |  | 
            
              | 2714 |         my $authority = Koha::MetadataRecord::Authority->get_from_authid($authid); | 
            
              | 2715 |         next unless $authority; | 
            
              | 2716 |         my $auth_marc = $authority->record; | 
            
              | 2717 |         my @seefrom = $auth_marc->field('4..'); | 
            
              | 2718 |         my @newfields; | 
            
              | 2719 |         foreach my $authfield (@seefrom) { | 
            
              | 2720 |             my $tag = substr($field->tag(), 0, 1) . substr($authfield->tag(), 1, 2); | 
            
              | 2721 |             next if MARC::Field->is_controlfield_tag($tag); | 
            
              | 2722 |             my $newfield = MARC::Field->new($tag, | 
            
              | 2723 |                     'z', | 
            
              | 2724 |                     $authfield->indicator(2) || ' ', | 
            
              | 2725 |                     '9' => '1'); | 
            
              | 2726 |             foreach my $sub ($authfield->subfields()) { | 
            
              | 2727 |                 my ($code,$val) = @$sub; | 
            
              | 2728 |                 $newfield->add_subfields( $code => $val ); | 
            
              | 2729 |             } | 
            
              | 2730 |             $newfield->delete_subfield( code => '9' ); | 
            
              | 2731 |             push @newfields, $newfield if (scalar($newfield->subfields()) > 0); | 
            
              | 2732 |         } | 
            
              | 2733 |         $record->append_fields(@newfields); | 
            
              | 2734 |     } | 
            
              | 2735 | } | 
            
              | 2736 |  | 
        
          | 2683 | =head1 INTERNAL FUNCTIONS | 2737 | =head1 INTERNAL FUNCTIONS | 
        
          | 2684 |  | 2738 |  | 
        
          | 2685 | =head2 _koha_marc_update_bib_ids | 2739 | =head2 _koha_marc_update_bib_ids |