From b5880ecda8428ba0691ffbb552731667b007678e Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Fri, 28 Sep 2018 14:58:20 +0000 Subject: [PATCH] Bug 21450: Cache authorities search using term and auth_type This is a simple fix to prevent incorrect caching of results when using link_bibs_to_authorities To test: 1 - Find or create a record with the same term in a subject and genre heading 2 - Find or create authority records for the term as a subject and genre type 3 - Run link bibs to authorities 4 - Verify both tags in the record are linked to the subject heading 5 - Aply patch 6 - Unlink the record and re-run the script (or just re-run) 7 - Each tag should be linked to correct authority Signed-off-by: Frank Hansen --- C4/Linker/Default.pm | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/C4/Linker/Default.pm b/C4/Linker/Default.pm index b39557cbb7..1fa395c19a 100644 --- a/C4/Linker/Default.pm +++ b/C4/Linker/Default.pm @@ -30,12 +30,13 @@ sub get_link { my $heading = shift; my $behavior = shift || 'default'; my $search_form = $heading->search_form(); + my $auth_type = $heading->auth_type(); my $authid; my $fuzzy = 0; - if ( $self->{'cache'}->{$search_form}->{'cached'} ) { - $authid = $self->{'cache'}->{$search_form}->{'authid'}; - $fuzzy = $self->{'cache'}->{$search_form}->{'fuzzy'}; + if ( $self->{'cache'}->{$search_form.$auth_type}->{'cached'} ) { + $authid = $self->{'cache'}->{$search_form.$auth_type}->{'authid'}; + $fuzzy = $self->{'cache'}->{$search_form.$auth_type}->{'fuzzy'}; } else { @@ -72,9 +73,9 @@ sub get_link { } } - $self->{'cache'}->{$search_form}->{'cached'} = 1; - $self->{'cache'}->{$search_form}->{'authid'} = $authid; - $self->{'cache'}->{$search_form}->{'fuzzy'} = $fuzzy; + $self->{'cache'}->{$search_form.$auth_type}->{'cached'} = 1; + $self->{'cache'}->{$search_form.$auth_type}->{'authid'} = $authid; + $self->{'cache'}->{$search_form.$auth_type}->{'fuzzy'} = $fuzzy; } return $self->SUPER::_handle_auth_limit($authid), $fuzzy; } @@ -84,11 +85,12 @@ sub update_cache { my $heading = shift; my $authid = shift; my $search_form = $heading->search_form(); + my $auth_type = $heading->auth_type(); my $fuzzy = 0; - $self->{'cache'}->{$search_form}->{'cached'} = 1; - $self->{'cache'}->{$search_form}->{'authid'} = $authid; - $self->{'cache'}->{$search_form}->{'fuzzy'} = $fuzzy; + $self->{'cache'}->{$search_form.$auth_type}->{'cached'} = 1; + $self->{'cache'}->{$search_form.$auth_type}->{'authid'} = $authid; + $self->{'cache'}->{$search_form.$auth_type}->{'fuzzy'} = $fuzzy; } sub flip_heading { -- 2.11.0