From 64e0c3969b7c711f743ff1e6c27ba056eda1e261 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 FIXME: This needs unit tests 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 --- C4/Linker/Default.pm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/C4/Linker/Default.pm b/C4/Linker/Default.pm index b39557c..15e0a81 100644 --- a/C4/Linker/Default.pm +++ b/C4/Linker/Default.pm @@ -30,10 +30,11 @@ 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'} ) { + if ( $self->{'cache'}->{$search_form.$auth_type}->{'cached'} ) { $authid = $self->{'cache'}->{$search_form}->{'authid'}; $fuzzy = $self->{'cache'}->{$search_form}->{'fuzzy'}; } @@ -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.1.4