Bug 17380: Do not use GuessAuthTypeCode in MetadataRecord::Authority
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Mon, 26 Jun 2017 11:41:56 +0000 (13:41 +0200)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 12 Sep 2017 15:07:47 +0000 (12:07 -0300)
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>

Koha/MetadataRecord/Authority.pm
authorities/merge.pl

index c3b3314..f9eedf8 100644 (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,
index 0230dbf..060db09 100755 (executable)
@@ -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) {