View | Details | Raw Unified | Return to bug 27269
Collapse All | Expand All

(-)a/C4/Biblio.pm (-90 lines)
Lines 33-39 BEGIN { Link Here
33
        GetMarcControlnumber
33
        GetMarcControlnumber
34
        GetMarcISBN
34
        GetMarcISBN
35
        GetMarcISSN
35
        GetMarcISSN
36
        GetMarcSubjects
37
        GetMarcSeries
36
        GetMarcSeries
38
        GetMarcUrls
37
        GetMarcUrls
39
        GetUsedMarcStructure
38
        GetUsedMarcStructure
Lines 1577-1671 sub GetMarcISSN { Link Here
1577
    return \@marcissns;
1576
    return \@marcissns;
1578
}    # end GetMarcISSN
1577
}    # end GetMarcISSN
1579
1578
1580
=head2 GetMarcSubjects
1581
1582
  $marcsubjcts = GetMarcSubjects($record,$marcflavour);
1583
1584
Get all subjects from the MARC record and returns them in an array.
1585
The subjects are stored in different fields depending on MARC flavour
1586
1587
=cut
1588
1589
sub GetMarcSubjects {
1590
    my ( $record, $marcflavour ) = @_;
1591
    if (!$record) {
1592
        carp 'GetMarcSubjects called on undefined record';
1593
        return;
1594
    }
1595
    my ( $mintag, $maxtag, $fields_filter );
1596
    if ( $marcflavour eq "UNIMARC" ) {
1597
        $mintag = "600";
1598
        $maxtag = "611";
1599
        $fields_filter = '6..';
1600
    } else { # marc21
1601
        $mintag = "600";
1602
        $maxtag = "699";
1603
        $fields_filter = '6..';
1604
    }
1605
1606
    my @marcsubjects;
1607
1608
    my $subject_limit = C4::Context->preference("TraceCompleteSubfields") ? 'su,complete-subfield' : 'su';
1609
    my $AuthoritySeparator = C4::Context->preference('AuthoritySeparator');
1610
1611
    foreach my $field ( $record->field($fields_filter) ) {
1612
        next unless ($field->tag() >= $mintag && $field->tag() <= $maxtag);
1613
        my @subfields_loop;
1614
        my @subfields = $field->subfields();
1615
        my @link_loop;
1616
1617
        # if there is an authority link, build the links with an= subfield9
1618
        my $subfield9 = $field->subfield('9');
1619
        my $authoritylink;
1620
        if ($subfield9) {
1621
            my $linkvalue = $subfield9;
1622
            $linkvalue =~ s/(\(|\))//g;
1623
            @link_loop = ( { limit => 'an', 'link' => $linkvalue } );
1624
            $authoritylink = $linkvalue
1625
        }
1626
1627
        # other subfields
1628
        for my $subject_subfield (@subfields) {
1629
            next if ( $subject_subfield->[0] eq '9' );
1630
1631
            # don't load unimarc subfields 3,4,5
1632
            next if ( ( $marcflavour eq "UNIMARC" ) and ( $subject_subfield->[0] =~ /2|3|4|5/ ) );
1633
            # don't load MARC21 subfields 2 (FIXME: any more subfields??)
1634
            next if ( ( $marcflavour eq "MARC21" ) and ( $subject_subfield->[0] =~ /2/ ) );
1635
1636
            my $code      = $subject_subfield->[0];
1637
            my $value     = $subject_subfield->[1];
1638
            my $linkvalue = $value;
1639
            $linkvalue =~ s/(\(|\))//g;
1640
            # if no authority link, build a search query
1641
            unless ($subfield9) {
1642
                push @link_loop, {
1643
                    limit    => $subject_limit,
1644
                    'link'   => $linkvalue,
1645
                    operator => (scalar @link_loop) ? ' AND ' : undef
1646
                };
1647
            }
1648
            my @this_link_loop = @link_loop;
1649
            # do not display $0
1650
            unless ( $code eq '0' ) {
1651
                push @subfields_loop, {
1652
                    code      => $code,
1653
                    value     => $value,
1654
                    link_loop => \@this_link_loop,
1655
                    separator => (scalar @subfields_loop) ? $AuthoritySeparator : ''
1656
                };
1657
            }
1658
        }
1659
1660
        push @marcsubjects, {
1661
            MARCSUBJECT_SUBFIELDS_LOOP => \@subfields_loop,
1662
            authoritylink => $authoritylink,
1663
        } if $authoritylink || @subfields_loop;
1664
1665
    }
1666
    return \@marcsubjects;
1667
}    #end getMARCsubjects
1668
1669
=head2 GetMarcUrls
1579
=head2 GetMarcUrls
1670
1580
1671
  $marcurls = GetMarcUrls($record,$marcflavour);
1581
  $marcurls = GetMarcUrls($record,$marcflavour);
(-)a/Koha/Biblio.pm (+88 lines)
Lines 1582-1587 sub normalized_oclc { Link Here
1582
    return $self->metadata_extractor->get_normalized_oclc;
1582
    return $self->metadata_extractor->get_normalized_oclc;
1583
}
1583
}
1584
1584
1585
=head3 get_marc_subjects
1586
1587
  $marcsubjcts = $biblio->get_marc_subjects;
1588
1589
Get all subjects from the MARC record and returns them in an array.
1590
The subjects are stored in different fields depending on MARC flavour
1591
1592
=cut
1593
1594
sub get_marc_subjects {
1595
    my ( $self, $params ) = @_;
1596
    my ( $mintag, $maxtag, $fields_filter );
1597
1598
    my $marcflavour = C4::Context->preference('marcflavour');
1599
    if ( $marcflavour eq "UNIMARC" ) {
1600
        $mintag = "600";
1601
        $maxtag = "611";
1602
        $fields_filter = '6..';
1603
    } else { # marc21/normarc
1604
        $mintag = "600";
1605
        $maxtag = "699";
1606
        $fields_filter = '6..';
1607
    }
1608
1609
    my @marcsubjects;
1610
1611
    my $subject_limit = C4::Context->preference("TraceCompleteSubfields") ? 'su,complete-subfield' : 'su';
1612
    my $AuthoritySeparator = C4::Context->preference('AuthoritySeparator');
1613
1614
    foreach my $field ( $self->metadata->record->field($fields_filter) ) {
1615
        next unless ($field->tag() >= $mintag && $field->tag() <= $maxtag);
1616
        my @subfields_loop;
1617
        my @subfields = $field->subfields();
1618
        my @link_loop;
1619
1620
        # if there is an authority link, build the links with an= subfield9
1621
        my $subfield9 = $field->subfield('9');
1622
        my $authoritylink;
1623
        if ($subfield9) {
1624
            my $linkvalue = $subfield9;
1625
            $linkvalue =~ s/(\(|\))//g;
1626
            @link_loop = ( { limit => 'an', 'link' => $linkvalue } );
1627
            $authoritylink = $linkvalue
1628
        }
1629
1630
        # other subfields
1631
        for my $subject_subfield (@subfields) {
1632
            next if ( $subject_subfield->[0] eq '9' );
1633
1634
            # don't load unimarc subfields 3,4,5
1635
            next if ( ( $marcflavour eq "UNIMARC" ) and ( $subject_subfield->[0] =~ /2|3|4|5/ ) );
1636
            # don't load MARC21 subfields 2 (FIXME: any more subfields??)
1637
            next if ( ( $marcflavour eq "MARC21" ) and ( $subject_subfield->[0] =~ /2/ ) );
1638
1639
            my $code      = $subject_subfield->[0];
1640
            my $value     = $subject_subfield->[1];
1641
            my $linkvalue = $value;
1642
            $linkvalue =~ s/(\(|\))//g;
1643
            # if no authority link, build a search query
1644
            unless ($subfield9) {
1645
                push @link_loop, {
1646
                    limit    => $subject_limit,
1647
                    'link'   => $linkvalue,
1648
                    operator => (scalar @link_loop) ? ' and ' : undef
1649
                };
1650
            }
1651
            my @this_link_loop = @link_loop;
1652
            # do not display $0
1653
            unless ( $code eq '0') {
1654
                push @subfields_loop, {
1655
                    tag       => $field->tag(),
1656
                    code      => $code,
1657
                    value     => $value,
1658
                    link_loop => \@this_link_loop,
1659
                    separator => (scalar @subfields_loop) ? $AuthoritySeparator : ''
1660
                };
1661
            }
1662
        }
1663
1664
        push @marcsubjects, {
1665
            MARCSUBJECT_SUBFIELDS_LOOP => \@subfields_loop,
1666
            authoritylink => $authoritylink,
1667
        } if $authoritylink || @subfields_loop;
1668
1669
    }
1670
    return \@marcsubjects;
1671
}
1672
1585
=head3 to_api
1673
=head3 to_api
1586
1674
1587
    my $json = $biblio->to_api;
1675
    my $json = $biblio->to_api;
(-)a/basket/basket.pl (-2 / +1 lines)
Lines 21-27 use CGI qw ( -utf8 ); Link Here
21
use C4::Koha;
21
use C4::Koha;
22
use C4::Biblio qw(
22
use C4::Biblio qw(
23
    GetMarcSeries
23
    GetMarcSeries
24
    GetMarcSubjects
25
    GetMarcUrls
24
    GetMarcUrls
26
);
25
);
27
use C4::Auth qw( get_template_and_user );
26
use C4::Auth qw( get_template_and_user );
Lines 68-74 foreach my $biblionumber ( @bibs ) { Link Here
68
    my $record           = $biblio->metadata->record;
67
    my $record           = $biblio->metadata->record;
69
    my $marcnotesarray   = $biblio->get_marc_notes;
68
    my $marcnotesarray   = $biblio->get_marc_notes;
70
    my $marcauthorsarray = $biblio->get_marc_contributors;
69
    my $marcauthorsarray = $biblio->get_marc_contributors;
71
    my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
70
    my $marcsubjctsarray = $biblio->get_marc_subjects;
72
    my $marcseriesarray  = GetMarcSeries  ($record,$marcflavour);
71
    my $marcseriesarray  = GetMarcSeries  ($record,$marcflavour);
73
    my $marcurlsarray    = GetMarcUrls    ($record,$marcflavour);
72
    my $marcurlsarray    = GetMarcUrls    ($record,$marcflavour);
74
73
(-)a/basket/sendbasket.pl (-3 lines)
Lines 22-30 use Encode; Link Here
22
use Carp qw( carp );
22
use Carp qw( carp );
23
use Try::Tiny qw( catch try );
23
use Try::Tiny qw( catch try );
24
24
25
use C4::Biblio qw(
26
  GetMarcSubjects
27
);
28
use C4::Auth qw( get_template_and_user );
25
use C4::Auth qw( get_template_and_user );
29
use C4::Output qw( output_and_exit output_html_with_http_headers );
26
use C4::Output qw( output_and_exit output_html_with_http_headers );
30
use C4::Templates;
27
use C4::Templates;
(-)a/installer/data/mysql/en/mandatory/sample_notices.yml (+2 lines)
Lines 2380-2385 tables: Link Here
2380
            - "[% IF ( biblioitem.publishercode ) %]Published by: [% biblioitem.publishercode | html %][% IF ( biblioitem.publicationyear ) %] in [% biblioitem.publicationyear | html %][% END %][% IF ( biblioitem.pages ) %], [% biblioitem.pages | html %][% END %]<br>[% END %]"
2380
            - "[% IF ( biblioitem.publishercode ) %]Published by: [% biblioitem.publishercode | html %][% IF ( biblioitem.publicationyear ) %] in [% biblioitem.publicationyear | html %][% END %][% IF ( biblioitem.pages ) %], [% biblioitem.pages | html %][% END %]<br>[% END %]"
2381
            - "[% IF ( biblio.seriestitle ) %]Collection: [% biblio.seriestitle | html %]<br>[% END %]"
2381
            - "[% IF ( biblio.seriestitle ) %]Collection: [% biblio.seriestitle | html %]<br>[% END %]"
2382
            - "[% IF ( biblio.copyrightdate ) %]Copyright year: [% biblio.copyrightdate | html %]<br>[% END %]"
2382
            - "[% IF ( biblio.copyrightdate ) %]Copyright year: [% biblio.copyrightdate | html %]<br>[% END %]"
2383
            - "[% IF ( biblio.get_marc_subjects ) %]Subject(s): [% FOREACH subject IN biblio.get_marc_subjects %][% FOREACH subfield IN subject.MARCSUBJECT_SUBFIELDS_LOOP %][% subfield.separator | html %][% subfield.value | html %][% END %][% UNLESS ( loop.last ) %];[% END %][% END %][% END %]"
2383
            - "[% IF ( biblio.notes ) %]Notes: [% biblio.notes | html %]<br>[% END %]"
2384
            - "[% IF ( biblio.notes ) %]Notes: [% biblio.notes | html %]<br>[% END %]"
2384
            - "[% IF ( biblio.unititle ) %]Unified title: [% biblio.unititle | html %]<br>[% END %]"
2385
            - "[% IF ( biblio.unititle ) %]Unified title: [% biblio.unititle | html %]<br>[% END %]"
2385
            - "[% IF ( biblio.serial ) %]Serial: [% biblio.serial | html %]<br>[% END %]"
2386
            - "[% IF ( biblio.serial ) %]Serial: [% biblio.serial | html %]<br>[% END %]"
Lines 2416-2421 tables: Link Here
2416
            - "[% IF ( biblioitem.publishercode ) %]Published by: [% biblioitem.publishercode | html %][% IF ( biblioitem.publicationyear ) %] in [% biblioitem.publicationyear | html %][% END %][% IF ( biblioitem.pages ) %], [% biblioitem.pages | html %][% END %]<br>[% END %]"
2417
            - "[% IF ( biblioitem.publishercode ) %]Published by: [% biblioitem.publishercode | html %][% IF ( biblioitem.publicationyear ) %] in [% biblioitem.publicationyear | html %][% END %][% IF ( biblioitem.pages ) %], [% biblioitem.pages | html %][% END %]<br>[% END %]"
2417
            - "[% IF ( biblio.seriestitle ) %]Collection: [% biblio.seriestitle | html %]<br>[% END %]"
2418
            - "[% IF ( biblio.seriestitle ) %]Collection: [% biblio.seriestitle | html %]<br>[% END %]"
2418
            - "[% IF ( biblio.copyrightdate ) %]Copyright year: [% biblio.copyrightdate | html %]<br>[% END %]"
2419
            - "[% IF ( biblio.copyrightdate ) %]Copyright year: [% biblio.copyrightdate | html %]<br>[% END %]"
2420
            - "[% IF ( biblio.get_marc_subjects ) %]Subject(s): [% FOREACH subject IN biblio.get_marc_subjects %][% FOREACH subfield IN subject.MARCSUBJECT_SUBFIELDS_LOOP %][% subfield.separator | html %][% subfield.value | html %][% END %][% UNLESS ( loop.last ) %];[% END %][% END %][% END %]"
2419
            - "[% IF ( biblio.notes ) %]Notes: [% biblio.notes | html %]<br>[% END %]"
2421
            - "[% IF ( biblio.notes ) %]Notes: [% biblio.notes | html %]<br>[% END %]"
2420
            - "[% IF ( biblio.unititle ) %]Unified title: [% biblio.unititle | html %]<br>[% END %]"
2422
            - "[% IF ( biblio.unititle ) %]Unified title: [% biblio.unititle | html %]<br>[% END %]"
2421
            - "[% IF ( biblio.serial ) %]Serial: [% biblio.serial | html %]<br>[% END %]"
2423
            - "[% IF ( biblio.serial ) %]Serial: [% biblio.serial | html %]<br>[% END %]"
(-)a/opac/opac-basket.pl (-2 / +1 lines)
Lines 23-29 use C4::Koha; Link Here
23
use C4::Biblio qw(
23
use C4::Biblio qw(
24
    GetFrameworkCode
24
    GetFrameworkCode
25
    GetMarcSeries
25
    GetMarcSeries
26
    GetMarcSubjects
27
    GetMarcUrls
26
    GetMarcUrls
28
);
27
);
29
use C4::Auth qw( get_template_and_user );
28
use C4::Auth qw( get_template_and_user );
Lines 85-91 foreach my $biblionumber ( @bibs ) { Link Here
85
    next unless $record;
84
    next unless $record;
86
    my $marcnotesarray   = $biblio->get_marc_notes({ opac => 1 });
85
    my $marcnotesarray   = $biblio->get_marc_notes({ opac => 1 });
87
    my $marcauthorsarray = $biblio->get_marc_contributors;
86
    my $marcauthorsarray = $biblio->get_marc_contributors;
88
    my $marcsubjctsarray = GetMarcSubjects( $record, $marcflavour );
87
    my $marcsubjctsarray = $biblio->get_marc_subjects;
89
    my $marcseriesarray  = GetMarcSeries  ($record,$marcflavour);
88
    my $marcseriesarray  = GetMarcSeries  ($record,$marcflavour);
90
    my $marcurlsarray    = GetMarcUrls    ($record,$marcflavour);
89
    my $marcurlsarray    = GetMarcUrls    ($record,$marcflavour);
91
90
(-)a/opac/opac-detail.pl (-1 / +2 lines)
Lines 42-48 use C4::Biblio qw( Link Here
42
    GetMarcISBN
42
    GetMarcISBN
43
    GetMarcISSN
43
    GetMarcISSN
44
    GetMarcSeries
44
    GetMarcSeries
45
    GetMarcSubjects
46
    GetMarcUrls
45
    GetMarcUrls
47
);
46
);
48
use C4::Tags qw( get_tags );
47
use C4::Tags qw( get_tags );
Lines 780-785 if (scalar(@itemloop) == 0 || scalar(@otheritemloop) == 0) { Link Here
780
}
779
}
781
780
782
my $marcnotesarray = $biblio->get_marc_notes({ opac => 1, record => $record });
781
my $marcnotesarray = $biblio->get_marc_notes({ opac => 1, record => $record });
782
my $marcsubjctsarray = $biblio->get_marc_subjects;
783
783
784
if( C4::Context->preference('ArticleRequests') ) {
784
if( C4::Context->preference('ArticleRequests') ) {
785
    my $patron = $borrowernumber ? Koha::Patrons->find($borrowernumber) : undef;
785
    my $patron = $borrowernumber ? Koha::Patrons->find($borrowernumber) : undef;
Lines 795-800 if( C4::Context->preference('ArticleRequests') ) { Link Here
795
my $norequests = ! $biblio->items->filter_by_for_hold->count;
795
my $norequests = ! $biblio->items->filter_by_for_hold->count;
796
    $template->param(
796
    $template->param(
797
                     MARCNOTES               => $marcnotesarray,
797
                     MARCNOTES               => $marcnotesarray,
798
                     MARCSUBJCTS             => $marcsubjctsarray,
798
                     norequests              => $norequests,
799
                     norequests              => $norequests,
799
                     itemdata_ccode          => $itemfields{ccode},
800
                     itemdata_ccode          => $itemfields{ccode},
800
                     itemdata_materials      => $itemfields{materials},
801
                     itemdata_materials      => $itemfields{materials},
(-)a/opac/opac-sendbasket.pl (-3 lines)
Lines 24-32 use Encode; Link Here
24
use Carp qw( carp );
24
use Carp qw( carp );
25
use Try::Tiny qw( catch try );
25
use Try::Tiny qw( catch try );
26
26
27
use C4::Biblio qw(
28
  GetMarcSubjects
29
);
30
use C4::Auth qw( get_template_and_user );
27
use C4::Auth qw( get_template_and_user );
31
use C4::Output qw( output_html_with_http_headers );
28
use C4::Output qw( output_html_with_http_headers );
32
use C4::Templates;
29
use C4::Templates;
(-)a/opac/opac-sendshelf.pl (-1 lines)
Lines 28-34 use C4::Auth qw( get_template_and_user ); Link Here
28
use C4::Biblio qw(
28
use C4::Biblio qw(
29
  GetFrameworkCode
29
  GetFrameworkCode
30
  GetMarcISBN
30
  GetMarcISBN
31
  GetMarcSubjects
32
);
31
);
33
use C4::Output qw( output_html_with_http_headers );
32
use C4::Output qw( output_html_with_http_headers );
34
use Koha::Biblios;
33
use Koha::Biblios;
(-)a/t/Biblio.t (-8 / +2 lines)
Lines 21-30 use Test::More; Link Here
21
use Test::MockModule;
21
use Test::MockModule;
22
use Test::Warn;
22
use Test::Warn;
23
23
24
plan tests => 34;
24
plan tests => 32;
25
25
26
26
27
use_ok('C4::Biblio', qw( AddBiblio ModBiblio BiblioAutoLink LinkBibHeadingsToAuthorities GetMarcPrice GetMarcQuantity GetMarcControlnumber GetMarcISBN GetMarcISSN GetMarcSubjects GetMarcUrls GetMarcSeries TransformMarcToKoha ModBiblioMarc RemoveAllNsb UpdateTotalIssues ));
27
use_ok('C4::Biblio', qw( AddBiblio ModBiblio BiblioAutoLink LinkBibHeadingsToAuthorities GetMarcPrice GetMarcQuantity GetMarcControlnumber GetMarcISBN GetMarcISSN GetMarcUrls GetMarcSeries TransformMarcToKoha ModBiblioMarc RemoveAllNsb UpdateTotalIssues ));
28
28
29
my $db = Test::MockModule->new('Koha::Database');
29
my $db = Test::MockModule->new('Koha::Database');
30
$db->mock( _new_schema => sub { return Schema(); } );
30
$db->mock( _new_schema => sub { return Schema(); } );
Lines 88-99 warning_is { $ret = GetMarcISSN() } Link Here
88
88
89
ok( !defined $ret, 'GetMarcISSN returns undef if not passed rec');
89
ok( !defined $ret, 'GetMarcISSN returns undef if not passed rec');
90
90
91
warning_is { $ret = GetMarcSubjects() }
92
           { carped => 'GetMarcSubjects called on undefined record'},
93
           "GetMarcSubjects returns carped warning on undef record";
94
95
ok( !defined $ret, 'GetMarcSubjects returns undef if not passed rec');
96
97
warning_is { $ret = GetMarcUrls() }
91
warning_is { $ret = GetMarcUrls() }
98
           { carped => 'GetMarcUrls called on undefined record'},
92
           { carped => 'GetMarcUrls called on undefined record'},
99
           "GetMarcUrls returns carped warning on undef record";
93
           "GetMarcUrls returns carped warning on undef record";
(-)a/t/db_dependent/Koha/Biblio.t (-1 / +31 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 30;
20
use Test::More tests => 31;
21
use Test::Exception;
21
use Test::Exception;
22
use Test::Warn;
22
use Test::Warn;
23
23
Lines 1171-1176 subtest 'item_groups() tests' => sub { Link Here
1171
    $schema->storage->txn_rollback;
1171
    $schema->storage->txn_rollback;
1172
};
1172
};
1173
1173
1174
<<<<<<< HEAD
1174
subtest 'normalized_isbn' => sub {
1175
subtest 'normalized_isbn' => sub {
1175
    plan tests => 1;
1176
    plan tests => 1;
1176
1177
Lines 1235-1240 subtest 'opac_summary_html' => sub { Link Here
1235
        sprintf( 'Replace %s, %s, %s AND %s please', $author, $title, $biblio->normalized_isbn, $biblio->biblionumber ),
1236
        sprintf( 'Replace %s, %s, %s AND %s please', $author, $title, $biblio->normalized_isbn, $biblio->biblionumber ),
1236
        'opac_summary_html replaces the different patterns'
1237
        'opac_summary_html replaces the different patterns'
1237
    );
1238
    );
1239
=======
1240
subtest 'get_marc_subjects() tests' => sub {
1241
1242
    plan tests => 1;
1243
1244
    $schema->storage->txn_begin;
1245
1246
    my $biblio = $builder->build_sample_biblio;
1247
    my $record = $biblio->metadata->record;
1248
    t::lib::Mocks::mock_preference( 'marcflavour', 'MARC21' );
1249
1250
    # add author information
1251
    my $field = MARC::Field->new('600','1','0','a' => 'Nixon, Richard M.');
1252
    $record->append_fields($field);
1253
    $field = MARC::Field->new('600','1','0','q' => '(Richard Milhouse),');
1254
    $record->append_fields($field);
1255
    $field = MARC::Field->new('600','1','0','d' => '1913-');
1256
    $record->append_fields($field);
1257
    $field = MARC::Field->new('600','1','0','x' => 'Psychology.');
1258
    $record->append_fields($field);
1259
1260
    # get record
1261
    C4::Biblio::ModBiblio( $record, $biblio->id );
1262
    $biblio = Koha::Biblios->find( $biblio->id );
1263
1264
    is( @{$biblio->get_marc_subjects}, 4, 'get_marc_subjects retrieves correct number of subject subfields' );
1265
1266
    $schema->storage->txn_rollback;
1267
>>>>>>> Bug 27269: Move GetMarcSubjects to Koha namespace
1238
};
1268
};
1239
1269
1240
sub component_record1 {
1270
sub component_record1 {
(-)a/virtualshelves/sendshelf.pl (-2 lines)
Lines 27-33 use Try::Tiny qw( catch try ); Link Here
27
use C4::Auth qw( get_template_and_user );
27
use C4::Auth qw( get_template_and_user );
28
use C4::Biblio qw(
28
use C4::Biblio qw(
29
  GetMarcISBN
29
  GetMarcISBN
30
  GetMarcSubjects
31
);
30
);
32
use C4::Output qw(
31
use C4::Output qw(
33
  output_html_with_http_headers
32
  output_html_with_http_headers
34
- 

Return to bug 27269