|
Lines 663-700
sub AddAuthority {
Link Here
|
| 663 |
$record->add_fields($auth_type_tag,'','', $auth_type_subfield=>$authtypecode); |
663 |
$record->add_fields($auth_type_tag,'','', $auth_type_subfield=>$authtypecode); |
| 664 |
} |
664 |
} |
| 665 |
|
665 |
|
| 666 |
my $auth_exists=0; |
666 |
# Save record into auth_header, update 001 |
| 667 |
my $oldRecord; |
667 |
if (!$authid ) { |
| 668 |
if (!$authid) { |
668 |
# Save a blank record, get authid |
| 669 |
my $sth=$dbh->prepare("select max(authid) from auth_header"); |
669 |
$dbh->do( "INSERT INTO auth_header (datecreated,marcxml) values (NOW(),?)", undef, '' ); |
| 670 |
$sth->execute; |
670 |
$authid = $dbh->last_insert_id( undef, undef, 'auth_header', 'authid' ); |
| 671 |
($authid)=$sth->fetchrow; |
671 |
logaction( "AUTHORITIES", "ADD", $authid, "authority" ) if C4::Context->preference("AuthoritiesLog"); |
| 672 |
$authid=$authid+1; |
|
|
| 673 |
##Insert the recordID in MARC record |
| 674 |
unless ($record->field('001') && $record->field('001')->data() eq $authid){ |
| 675 |
$record->delete_field($record->field('001')); |
| 676 |
$record->insert_fields_ordered(MARC::Field->new('001',$authid)); |
| 677 |
} |
672 |
} |
| 678 |
} else { |
673 |
# Insert/update the recordID in MARC record |
| 679 |
$auth_exists=$dbh->do(qq(select authid from auth_header where authid=?),undef,$authid); |
674 |
$record->delete_field( $record->field('001') ); |
| 680 |
# warn "auth_exists = $auth_exists"; |
675 |
$record->insert_fields_ordered( MARC::Field->new( '001', $authid ) ); |
| 681 |
} |
676 |
# Update |
| 682 |
if ($auth_exists>0){ |
677 |
$dbh->do( "UPDATE auth_header SET authtypecode=?, marc=?, marcxml=? WHERE authid=?", undef, $authtypecode, $record->as_usmarc, $record->as_xml_record($format), $authid ) or die $DBI::errstr; |
| 683 |
$oldRecord=GetAuthority($authid); |
678 |
ModZebra( $authid, 'specialUpdate', 'authorityserver', $record ); |
| 684 |
$record->add_fields('001',$authid) unless ($record->field('001')); |
679 |
|
| 685 |
# warn "\n\n\n enregistrement".$record->as_formatted; |
680 |
return ( $authid ); |
| 686 |
my $sth=$dbh->prepare("update auth_header set authtypecode=?,marc=?,marcxml=? where authid=?"); |
|
|
| 687 |
$sth->execute($authtypecode,$record->as_usmarc,$record->as_xml_record($format),$authid) or die $sth->errstr; |
| 688 |
$sth->finish; |
| 689 |
} |
| 690 |
else { |
| 691 |
my $sth=$dbh->prepare("insert into auth_header (authid,datecreated,authtypecode,marc,marcxml) values (?,now(),?,?,?)"); |
| 692 |
$sth->execute($authid,$authtypecode,$record->as_usmarc,$record->as_xml_record($format)); |
| 693 |
$sth->finish; |
| 694 |
logaction( "AUTHORITIES", "ADD", $authid, "authority" ) if C4::Context->preference("AuthoritiesLog"); |
| 695 |
} |
| 696 |
ModZebra($authid,'specialUpdate',"authorityserver",$oldRecord,$record); |
| 697 |
return ($authid); |
| 698 |
} |
681 |
} |
| 699 |
|
682 |
|
| 700 |
|
683 |
|