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

(-)a/C4/Biblio.pm (+4 lines)
Lines 482-487 sub LinkBibHeadingsToAuthorities { Link Here
482
    my $bib           = shift;
482
    my $bib           = shift;
483
    my $frameworkcode = shift;
483
    my $frameworkcode = shift;
484
    my $allowrelink = shift;
484
    my $allowrelink = shift;
485
    my $tagtolink     = shift;
485
    my %results;
486
    my %results;
486
    if (!$bib) {
487
    if (!$bib) {
487
        carp 'LinkBibHeadingsToAuthorities called on undefined bib record';
488
        carp 'LinkBibHeadingsToAuthorities called on undefined bib record';
Lines 493-498 sub LinkBibHeadingsToAuthorities { Link Here
493
    $allowrelink = 1 unless defined $allowrelink;
494
    $allowrelink = 1 unless defined $allowrelink;
494
    my $num_headings_changed = 0;
495
    my $num_headings_changed = 0;
495
    foreach my $field ( $bib->fields() ) {
496
    foreach my $field ( $bib->fields() ) {
497
        if ( defined $tagtolink ) {
498
          next unless $field->tag() == $tagtolink ;
499
        }
496
        my $heading = C4::Heading->new_from_field( $field, $frameworkcode );
500
        my $heading = C4::Heading->new_from_field( $field, $frameworkcode );
497
        next unless defined $heading;
501
        next unless defined $heading;
498
502
(-)a/misc/link_bibs_to_authorities.pl (-5 / +13 lines)
Lines 36-41 my $want_help = 0; Link Here
36
my $auth_limit;
36
my $auth_limit;
37
my $bib_limit;
37
my $bib_limit;
38
my $commit = 100;
38
my $commit = 100;
39
my $tagtolink;
39
40
40
my $result = GetOptions(
41
my $result = GetOptions(
41
    'v|verbose'      => \$verbose,
42
    'v|verbose'      => \$verbose,
Lines 44-49 my $result = GetOptions( Link Here
44
    'a|auth-limit=s' => \$auth_limit,
45
    'a|auth-limit=s' => \$auth_limit,
45
    'b|bib-limit=s'  => \$bib_limit,
46
    'b|bib-limit=s'  => \$bib_limit,
46
    'c|commit=i'     => \$commit,
47
    'c|commit=i'     => \$commit,
48
    'g|tagtolink=i'  => \$tagtolink,
47
    'h|help'         => \$want_help
49
    'h|help'         => \$want_help
48
);
50
);
49
51
Lines 77-89 my %linked_headings; Link Here
77
my %fuzzy_headings;
79
my %fuzzy_headings;
78
my $dbh = C4::Context->dbh;
80
my $dbh = C4::Context->dbh;
79
$dbh->{AutoCommit} = 0;
81
$dbh->{AutoCommit} = 0;
80
process_bibs( $linker, $bib_limit, $auth_limit, $commit );
82
process_bibs( $linker, $bib_limit, $auth_limit, $commit, $tagtolink );
81
$dbh->commit();
83
$dbh->commit();
82
84
83
exit 0;
85
exit 0;
84
86
85
sub process_bibs {
87
sub process_bibs {
86
    my ( $linker, $bib_limit, $auth_limit, $commit ) = @_;
88
    my ( $linker, $bib_limit, $auth_limit, $commit, $tagtolink ) = @_;
87
    my $bib_where = '';
89
    my $bib_where = '';
88
    my $starttime = time();
90
    my $starttime = time();
89
    if ($bib_limit) {
91
    if ($bib_limit) {
Lines 95-101 sub process_bibs { Link Here
95
    $sth->execute();
97
    $sth->execute();
96
    while ( my ($biblionumber) = $sth->fetchrow_array() ) {
98
    while ( my ($biblionumber) = $sth->fetchrow_array() ) {
97
        $num_bibs_processed++;
99
        $num_bibs_processed++;
98
        process_bib( $linker, $biblionumber );
100
        process_bib( $linker, $biblionumber, $tagtolink );
99
101
100
        if ( not $test_only and ( $num_bibs_processed % $commit ) == 0 ) {
102
        if ( not $test_only and ( $num_bibs_processed % $commit ) == 0 ) {
101
            print_progress_and_commit($num_bibs_processed);
103
            print_progress_and_commit($num_bibs_processed);
Lines 187-192 _FUZZY_HEADER_ Link Here
187
sub process_bib {
189
sub process_bib {
188
    my $linker       = shift;
190
    my $linker       = shift;
189
    my $biblionumber = shift;
191
    my $biblionumber = shift;
192
    my $tagtolink    = shift;
190
193
191
    my $bib = GetMarcBiblio({ biblionumber => $biblionumber });
194
    my $bib = GetMarcBiblio({ biblionumber => $biblionumber });
192
    unless ( defined $bib ) {
195
    unless ( defined $bib ) {
Lines 197-205 sub process_bib { Link Here
197
    }
200
    }
198
201
199
    my $frameworkcode = GetFrameworkCode($biblionumber);
202
    my $frameworkcode = GetFrameworkCode($biblionumber);
203
    my $allowrelink = C4::Context->preference("CatalogModuleRelink") || '';
200
204
201
    my ( $headings_changed, $results ) =
205
    my ( $headings_changed, $results ) =
202
      LinkBibHeadingsToAuthorities( $linker, $bib, $frameworkcode );
206
      LinkBibHeadingsToAuthorities( $linker, $bib, $frameworkcode, $allowrelink, $tagtolink );
203
    foreach my $key ( keys %{ $results->{'unlinked'} } ) {
207
    foreach my $key ( keys %{ $results->{'unlinked'} } ) {
204
        $unlinked_headings{$key} += $results->{'unlinked'}->{$key};
208
        $unlinked_headings{$key} += $results->{'unlinked'}->{$key};
205
    }
209
    }
Lines 246-251 link_bibs_to_authorities.pl Link Here
246
  link_bibs_to_authorities.pl --commit=1000
250
  link_bibs_to_authorities.pl --commit=1000
247
  link_bibs_to_authorities.pl --auth-limit=STRING
251
  link_bibs_to_authorities.pl --auth-limit=STRING
248
  link_bibs_to_authorities.pl --bib-limit=STRING
252
  link_bibs_to_authorities.pl --bib-limit=STRING
253
  link_bibs_to_authorities.pl -g=700
249
254
250
=head1 DESCRIPTION
255
=head1 DESCRIPTION
251
256
Lines 281-286 Only process those bib records that match the user-specified WHERE clause. Link Here
281
286
282
Commit the results to the database after every N records are processed.
287
Commit the results to the database after every N records are processed.
283
288
289
=item B<-g=N>
290
291
Only process those headings found in MARC field N.
292
284
=item B<--test>
293
=item B<--test>
285
294
286
Only test the authority linking and report the results; do not change the bib
295
Only test the authority linking and report the results; do not change the bib
287
- 

Return to bug 26641