|
Lines 485-497
sub _translate_query { #SRU query adjusted per server cf. srufields column
Link Here
|
| 485 |
|
485 |
|
| 486 |
ImportBreedingAuth($marcrecords,$overwrite_auth,$filename,$encoding); |
486 |
ImportBreedingAuth($marcrecords,$overwrite_auth,$filename,$encoding); |
| 487 |
|
487 |
|
| 488 |
ImportBreedingAuth imports MARC records in the reservoir (import_records table). |
488 |
ImportBreedingAuth imports MARC records in the reservoir (import_records table) or returns their id if they already exist. |
| 489 |
ImportBreedingAuth is based on the ImportBreeding subroutine. |
|
|
| 490 |
|
489 |
|
| 491 |
=cut |
490 |
=cut |
| 492 |
|
491 |
|
| 493 |
sub ImportBreedingAuth { |
492 |
sub ImportBreedingAuth { |
| 494 |
my ($marcrecord,$overwrite_auth,$filename,$encoding) = @_; |
493 |
my ($marcrecord,$filename,$encoding) = @_; |
| 495 |
my $dbh = C4::Context->dbh; |
494 |
my $dbh = C4::Context->dbh; |
| 496 |
|
495 |
|
| 497 |
my $batch_id = GetZ3950BatchId($filename); |
496 |
my $batch_id = GetZ3950BatchId($filename); |
|
Lines 500-555
sub ImportBreedingAuth {
Link Here
|
| 500 |
my $marcflavour = C4::Context->preference('marcflavour'); |
499 |
my $marcflavour = C4::Context->preference('marcflavour'); |
| 501 |
my $marc_type = $marcflavour eq 'UNIMARC' ? 'UNIMARCAUTH' : $marcflavour; |
500 |
my $marc_type = $marcflavour eq 'UNIMARC' ? 'UNIMARCAUTH' : $marcflavour; |
| 502 |
|
501 |
|
| 503 |
# fields used for import results |
502 |
my $heading = C4::AuthoritiesMarc::GetAuthorizedHeading({ record => $marcrecord }); |
| 504 |
my $imported=0; |
|
|
| 505 |
my $alreadyindb = 0; |
| 506 |
my $alreadyinfarm = 0; |
| 507 |
my $notmarcrecord = 0; |
| 508 |
my $breedingid; |
| 509 |
|
503 |
|
| 510 |
# Normalize the record so it doesn't have separated diacritics |
504 |
my $heading_authtype_code = GuessAuthTypeCode($marcrecord); |
| 511 |
SetUTF8Flag($marcrecord); |
|
|
| 512 |
|
| 513 |
if (scalar($marcrecord->fields()) == 0) { |
| 514 |
$notmarcrecord++; |
| 515 |
} else { |
| 516 |
my $heading; |
| 517 |
$heading = C4::AuthoritiesMarc::GetAuthorizedHeading({ record => $marcrecord }); |
| 518 |
|
505 |
|
| 519 |
my $heading_authtype_code; |
506 |
my $controlnumber = $marcrecord->field('001')->data; |
| 520 |
$heading_authtype_code = GuessAuthTypeCode($marcrecord); |
507 |
my $breedingid; |
| 521 |
|
508 |
|
| 522 |
my $controlnumber; |
509 |
# Normalize the record so it doesn't have separated diacritics |
| 523 |
$controlnumber = $marcrecord->field('001')->data; |
510 |
SetUTF8Flag($marcrecord); |
| 524 |
|
511 |
|
| 525 |
#Check if the authority record already exists in the database... |
512 |
$searchbreeding->execute($controlnumber,$heading); |
| 526 |
my ($duplicateauthid,$duplicateauthvalue); |
513 |
($breedingid) = $searchbreeding->fetchrow; |
| 527 |
if ($marcrecord && $heading_authtype_code) { |
|
|
| 528 |
($duplicateauthid,$duplicateauthvalue) = FindDuplicateAuthority( $marcrecord, $heading_authtype_code); |
| 529 |
} |
| 530 |
|
514 |
|
| 531 |
if ($duplicateauthid && $overwrite_auth ne 2) { |
515 |
return $breedingid if $breedingid; |
| 532 |
#If the authority record exists and $overwrite_auth doesn't equal 2, then mark it as already in the DB |
516 |
$breedingid = AddAuthToBatch($batch_id, 0, $marcrecord, $encoding); |
| 533 |
$alreadyindb++; |
517 |
return $breedingid; |
| 534 |
} else { |
|
|
| 535 |
if ($controlnumber && $heading) { |
| 536 |
$searchbreeding->execute($controlnumber,$heading); |
| 537 |
($breedingid) = $searchbreeding->fetchrow; |
| 538 |
} |
| 539 |
if ($breedingid && $overwrite_auth eq '0') { |
| 540 |
$alreadyinfarm++; |
| 541 |
} else { |
| 542 |
if ($breedingid && $overwrite_auth eq '1') { |
| 543 |
ModAuthorityInBatch($breedingid, $marcrecord); |
| 544 |
} else { |
| 545 |
my $import_id = AddAuthToBatch($batch_id, $imported, $marcrecord, $encoding); |
| 546 |
$breedingid = $import_id; |
| 547 |
} |
| 548 |
$imported++; |
| 549 |
} |
| 550 |
} |
| 551 |
} |
| 552 |
return ($notmarcrecord,$alreadyindb,$alreadyinfarm,$imported,$breedingid); |
| 553 |
} |
518 |
} |
| 554 |
|
519 |
|
| 555 |
=head2 Z3950SearchAuth |
520 |
=head2 Z3950SearchAuth |
|
Lines 649-655
sub Z3950SearchAuth {
Link Here
|
| 649 |
$heading_authtype_code = GuessAuthTypeCode($marcrecord); |
614 |
$heading_authtype_code = GuessAuthTypeCode($marcrecord); |
| 650 |
$heading = C4::AuthoritiesMarc::GetAuthorizedHeading({ record => $marcrecord }); |
615 |
$heading = C4::AuthoritiesMarc::GetAuthorizedHeading({ record => $marcrecord }); |
| 651 |
|
616 |
|
| 652 |
my ($notmarcrecord, $alreadyindb, $alreadyinfarm, $imported, $breedingid)= ImportBreedingAuth( $marcrecord, 2, $serverhost[$k], $encoding[$k]); |
617 |
my $breedingid = ImportBreedingAuth( $marcrecord, $serverhost[$k], $encoding[$k]); |
| 653 |
my %row_data; |
618 |
my %row_data; |
| 654 |
$row_data{server} = $servers[$k]->{'servername'}; |
619 |
$row_data{server} = $servers[$k]->{'servername'}; |
| 655 |
$row_data{breedingid} = $breedingid; |
620 |
$row_data{breedingid} = $breedingid; |
| 656 |
- |
|
|