Patch to improve auto-generated MARC21 authorities
authorBrian Harrington <brian@jhu.edu>
Tue, 21 Apr 2009 16:13:22 +0000 (12:13 -0400)
committerHenri-Damien LAURENT <henridamien.laurent@biblibre.com>
Wed, 16 Sep 2009 21:18:48 +0000 (23:18 +0200)
This patch makes sure that MARC21 authorities have a minimal
Leader, 008, and 040.  If an authority record is created through
BiblioAddsAuthority it generates a 670 based on information in
the bib record.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Signed-off-by: Henri-Damien LAURENT <henridamien.laurent@biblibre.com>
C4/AuthoritiesMarc.pm
cataloguing/addbiblio.pl

index 7c2e531..21c98b2 100644 (file)
@@ -519,16 +519,11 @@ sub AddAuthority {
 # pass the MARC::Record to this function, and it will create the records in the authority table
   my ($record,$authid,$authtypecode) = @_;
   my $dbh=C4::Context->dbh;
-       my $leader='     nz  a22     o  4500';#Leader for incomplete MARC21 record
+       my $leader='    nz   a22     o  4500';#Leader for incomplete MARC21 record
 
 # if authid empty => true add, find a new authid number
-    my $format;
-    if (uc(C4::Context->preference('marcflavour')) eq 'UNIMARC') {
-        $format= 'UNIMARCAUTH';
-    }
-    else {
-        $format= 'MARC21';
-    }
+  my $format= 'UNIMARCAUTH' if (uc(C4::Context->preference('marcflavour')) eq 'UNIMARC');
+  $format= 'MARC21' if (uc(C4::Context->preference('marcflavour')) ne 'UNIMARC');
 
        if ($format eq "MARC21") {
                if (!$record->leader) {
index b49b187..63a1113 100755 (executable)
@@ -792,6 +792,15 @@ AND (authtypecode IS NOT NULL AND authtypecode<>\"\")|);
                                        $marcrecordauth->insert_fields_ordered(MARC::Field->new('670','','','a'=>$cite));
                                }
 
+                               if (C4::Context->preference('marcflavour') eq 'MARC21') {
+                                       $marcrecordauth->insert_fields_ordered(MARC::Field->new('667','','','a'=>"Machine generated authority record."));
+                                       my $cite = $record->author() . ", " .  $record->title_proper() . ", " . $record->publication_date() . " "; 
+                                       $cite =~ s/^[\s\,]*//;
+                                       $cite =~ s/[\s\,]*$//;
+                                       $cite = "Work cat.: (" . C4::Context->preference('MARCOrgCode') . ")". $record->subfield('999','c') . ": " . $cite;
+                                       $marcrecordauth->insert_fields_ordered(MARC::Field->new('670','','','a'=>$cite));
+                               }
+
 #          warn "AUTH RECORD ADDED : ".$marcrecordauth->as_formatted;
 
          my $authid=AddAuthority($marcrecordauth,'',$data->{authtypecode});