From f53b6ec248322706033695ef2928921d0aaa36aa Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Mon, 26 Jun 2017 13:41:56 +0200 Subject: [PATCH] Bug 17380: Do not use GuessAuthTypeCode in MetadataRecord::Authority If we got an authtypecode from the database and this value is not NULL since the table column does not allow it, there is no need to call GuessAuthTypeCode for empty string (read: Default framework) in the sub get_from_authid. Furthermore, we remove three Koha::MetadataRecord::Authority->new calls. They are useless, since we do not pass a record. It just generates: No record passed at authorities/merge.pl line 96. Can't bless non-reference value at Koha/MetadataRecord/Authority.pm line 66. Instead we throw an ObjectNotFound exception. Test plan: [1] Run t/db_dependent/Koha_Authority.t [2] Interface will be tested in the following patches. Signed-off-by: Marcel de Rooy Signed-off-by: Josef Moravec Signed-off-by: Nick Clemens Signed-off-by: Jonathan Druart (cherry picked from commit db35492c795540d6c3b10f7cba18698aeb84a816) Signed-off-by: Fridolin Somers --- Koha/MetadataRecord/Authority.pm | 7 ------- authorities/merge.pl | 12 ++++++++---- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/Koha/MetadataRecord/Authority.pm b/Koha/MetadataRecord/Authority.pm index c3b3314ce6..f9eedf8dcc 100644 --- a/Koha/MetadataRecord/Authority.pm +++ b/Koha/MetadataRecord/Authority.pm @@ -93,13 +93,6 @@ sub get_from_authid { return if ($@); $record->encoding('UTF-8'); - # NOTE: GuessAuthTypeCode has no business in Koha::MetadataRecord::Authority, which is an - # object-oriented class. Eventually perhaps there will be utility - # classes in the Koha:: namespace, but there are not at the moment, - # so this shim seems like the best option all-around. - require C4::AuthoritiesMarc; - $authtypecode ||= C4::AuthoritiesMarc::GuessAuthTypeCode($record); - my $self = $class->SUPER::new( { authid => $authid, authtypecode => $authtypecode, schema => $marcflavour, diff --git a/authorities/merge.pl b/authorities/merge.pl index 0230dbf73b..060db09fbd 100755 --- a/authorities/merge.pl +++ b/authorities/merge.pl @@ -27,6 +27,8 @@ use Koha::MetadataRecord::Authority; use C4::Koha; use C4::Biblio; +use Koha::Exceptions; + my $input = new CGI; my @authid = $input->multi_param('authid'); my $merge = $input->param('merge'); @@ -87,14 +89,16 @@ else { push @errors, { code => "WRONG_COUNT", value => scalar(@authid) }; } else { - my $recordObj1 = Koha::MetadataRecord::Authority->get_from_authid($authid[0]) || Koha::MetadataRecord::Authority->new(); - my $recordObj2; + my $recordObj1 = Koha::MetadataRecord::Authority->get_from_authid($authid[0]); + Koha::Exceptions::ObjectNotFound->throw( "No authority record found for authid $authid[0]\n" ) if !$recordObj1; + my $recordObj2; if (defined $mergereference && $mergereference eq 'breeding') { - $recordObj2 = Koha::MetadataRecord::Authority->get_from_breeding($authid[1]) || Koha::MetadataRecord::Authority->new(); + $recordObj2 = Koha::MetadataRecord::Authority->get_from_breeding($authid[1]); } else { - $recordObj2 = Koha::MetadataRecord::Authority->get_from_authid($authid[1]) || Koha::MetadataRecord::Authority->new(); + $recordObj2 = Koha::MetadataRecord::Authority->get_from_authid($authid[1]); } + Koha::Exceptions::ObjectNotFound->throw( "No authority record found for authid $authid[1]\n" ) if !$recordObj2; if ($mergereference) { -- 2.39.5