4458ac5764
Under certain circumstances misc/link_bibs_to_authorities.pl creates multiple authority with identical heading. Test plan: 1. Have some (2-3) biblio records with some repeated headings Have BiblioAddsAuthorities = allow, AutoCreateAuthorities = generate Have no authority records 2. Run misc/link_bibs_to_authorities.pl script 3. You will get multiple authority records -- one for each occurence of a heading in biblio record. 4. Apply the patch. 5. Repeat 1-3 (remember to have "fresh" biblios, without $9, and no authorities). 6. The problem should be fixed. Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com> Works as described.
65 lines
1.6 KiB
Perl
65 lines
1.6 KiB
Perl
package C4::Linker::FirstMatch;
|
|
|
|
# Copyright 2011 C & P Bibliography Services
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it under the
|
|
# terms of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 2 of the License, or (at your option) any later
|
|
# version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with Koha; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Carp;
|
|
use C4::Heading;
|
|
use C4::Linker::Default; # Use Default for flipping
|
|
|
|
use base qw(C4::Linker);
|
|
|
|
sub new {
|
|
my $class = shift;
|
|
my $param = shift;
|
|
|
|
my $self = $class->SUPER::new($param);
|
|
$self->{'default_linker'} = C4::Linker::Default->new($param);
|
|
bless $self, $class;
|
|
return $self;
|
|
}
|
|
|
|
sub get_link {
|
|
my $self = shift;
|
|
my $heading = shift;
|
|
return $self->{'default_linker'}->get_link( $heading, 'first' );
|
|
}
|
|
|
|
sub update_cache {
|
|
my $self = shift;
|
|
my $heading = shift;
|
|
my $authid = shift;
|
|
$self->{'default_linker'}->update_cache( $heading, $authid );
|
|
}
|
|
|
|
sub flip_heading {
|
|
my $self = shift;
|
|
my $heading = shift;
|
|
|
|
return $self->{'default_linker'}->flip($heading);
|
|
}
|
|
|
|
1;
|
|
__END__
|
|
|
|
=head1 NAME
|
|
|
|
C4::Linker::FirstMatch - match against the first authority record
|
|
|
|
=cut
|