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 <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
(cherry picked from commit db35492c79)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
Marcel de Rooy 2017-06-26 13:41:56 +02:00 committed by Fridolin Somers
parent b432660013
commit f53b6ec248
2 changed files with 8 additions and 11 deletions

View File

@ -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,

View File

@ -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) {