Bugzilla – Attachment 12348 Details for
Bug 2060
Ability to import Authorities from Staff Client
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 2060 follow-up: add support for UNIMARCAUTH
Bug-2060-follow-up-add-support-for-UNIMARCAUTH.patch (text/plain), 9.77 KB, created by
Jared Camins-Esakov
on 2012-09-19 14:09:11 UTC
(
hide
)
Description:
Bug 2060 follow-up: add support for UNIMARCAUTH
Filename:
MIME Type:
Creator:
Jared Camins-Esakov
Created:
2012-09-19 14:09:11 UTC
Size:
9.77 KB
patch
obsolete
>From 3fe149c69fada0975a51d9be0c6f3421bc2f24d4 Mon Sep 17 00:00:00 2001 >From: Jared Camins-Esakov <jcamins@cpbibliography.com> >Date: Fri, 14 Sep 2012 08:46:04 -0400 >Subject: [PATCH] Bug 2060 follow-up: add support for UNIMARCAUTH > >The staged MARC management script was not correctly informing >the decoder ring that we had UNIMARC authorities, and the decoder >ring was dutifully trying to turn the authority records into a >bibliographic box of cereal. >--- > C4/ImportBatch.pm | 54 +++++++++++++++++++++++++++++++------------ > tools/manage-marc-import.pl | 2 +- > 2 files changed, 40 insertions(+), 16 deletions(-) > >diff --git a/C4/ImportBatch.pm b/C4/ImportBatch.pm >index 50b10cf..a655f29 100644 >--- a/C4/ImportBatch.pm >+++ b/C4/ImportBatch.pm >@@ -255,7 +255,7 @@ sub AddBiblioToBatch { > my $z3950random = shift; > my $update_counts = @_ ? shift : 1; > >- my $import_record_id = _create_import_record($batch_id, $record_sequence, $marc_record, 'biblio', $encoding, $z3950random); >+ my $import_record_id = _create_import_record($batch_id, $record_sequence, $marc_record, 'biblio', $encoding, $z3950random, C4::Context->preference('marcflavour')); > _add_biblio_fields($import_record_id, $marc_record); > _update_batch_record_counts($batch_id) if $update_counts; > return $import_record_id; >@@ -270,7 +270,7 @@ sub AddBiblioToBatch { > sub ModBiblioInBatch { > my ($import_record_id, $marc_record) = @_; > >- _update_import_record_marc($import_record_id, $marc_record); >+ _update_import_record_marc($import_record_id, $marc_record, C4::Context->preference('marcflavour')); > _update_biblio_fields($import_record_id, $marc_record); > > } >@@ -278,7 +278,7 @@ sub ModBiblioInBatch { > =head2 AddAuthToBatch > > my $import_record_id = AddAuthToBatch($batch_id, $record_sequence, >- $marc_record, $encoding, $z3950random, $update_counts); >+ $marc_record, $encoding, $z3950random, $update_counts, [$marc_type]); > > =cut > >@@ -289,8 +289,11 @@ sub AddAuthToBatch { > my $encoding = shift; > my $z3950random = shift; > my $update_counts = @_ ? shift : 1; >+ my $marc_type = shift || C4::Context->preference('marcflavour'); >+ >+ $marc_type = 'UNIMARCAUTH' if $marc_type eq 'UNIMARC'; > >- my $import_record_id = _create_import_record($batch_id, $record_sequence, $marc_record, 'auth', $encoding, $z3950random); >+ my $import_record_id = _create_import_record($batch_id, $record_sequence, $marc_record, 'auth', $encoding, $z3950random, $marc_type); > _add_auth_fields($import_record_id, $marc_record); > _update_batch_record_counts($batch_id) if $update_counts; > return $import_record_id; >@@ -305,7 +308,8 @@ sub AddAuthToBatch { > sub ModAuthInBatch { > my ($import_record_id, $marc_record) = @_; > >- _update_import_record_marc($import_record_id, $marc_record); >+ my $marcflavour = C4::Context->preference('marcflavour'); >+ _update_import_record_marc($import_record_id, $marc_record, $marcflavour eq 'UNIMARC' ? 'UNIMARCAUTH' : 'USMARC'); > > } > >@@ -354,6 +358,8 @@ sub BatchStageMarcRecords { > SetImportBatchItemAction($batch_id, 'ignore'); > } > >+ my $marc_type = C4::Context->preference('marcflavour'); >+ $marc_type .= 'AUTH' if ($marc_type eq 'UNIMARC' && $record_type eq 'auth'); > my @invalid_records = (); > my $num_valid = 0; > my $num_items = 0; >@@ -368,7 +374,7 @@ sub BatchStageMarcRecords { > &$progress_callback($rec_num); > } > my ($marc_record, $charset_guessed, $char_errors) = >- MarcToUTF8Record($marc_blob, C4::Context->preference("marcflavour"), $encoding); >+ MarcToUTF8Record($marc_blob, $marc_type, $encoding); > > $encoding = $charset_guessed unless $encoding; > >@@ -384,7 +390,7 @@ sub BatchStageMarcRecords { > $num_items += scalar(@import_items_ids); > } > } elsif ($record_type eq 'auth') { >- $import_record_id = AddAuthToBatch($batch_id, $rec_num, $marc_record, $encoding, int(rand(99999)), 0); >+ $import_record_id = AddAuthToBatch($batch_id, $rec_num, $marc_record, $encoding, int(rand(99999)), 0, $marc_type); > } > } > } >@@ -430,7 +436,7 @@ sub AddItemsToImportBiblio { > > if ($#import_items_ids > -1) { > _update_batch_record_counts($batch_id) if $update_counts; >- _update_import_record_marc($import_record_id, $marc_record); >+ _update_import_record_marc($import_record_id, $marc_record, C4::Context->preference('marcflavour')); > } > return @import_items_ids; > } >@@ -545,6 +551,7 @@ sub BatchCommitRecords { > LEFT JOIN import_biblios ON (import_records.import_record_id=import_biblios.import_record_id) > WHERE import_batch_id = ?"); > $sth->execute($batch_id); >+ my $marcflavour = C4::Context->preference('marcflavour'); > my $rec_num = 0; > while (my $rowref = $sth->fetchrow_hashref) { > $record_type = $rowref->{'record_type'}; >@@ -557,6 +564,14 @@ sub BatchCommitRecords { > next; > } > >+ my $marc_type; >+ if ($marcflavour eq 'UNIMARC' && $record_type eq 'auth') { >+ $marc_type = 'UNIMARCAUTH'; >+ } elsif ($marcflavour eq 'UNIMARC') { >+ $marc_type = 'UNIMARC'; >+ } else { >+ $marc_type = 'USMARC'; >+ } > my $marc_record = MARC::Record->new_from_usmarc($rowref->{'marc'}); > > if ($record_type eq 'biblio') { >@@ -602,11 +617,11 @@ sub BatchCommitRecords { > > # remove item fields so that they don't get > # added again if record is reverted >- my $old_marc = MARC::Record->new_from_xml(StripNonXmlChars($oldxml), 'UTF-8', $rowref->{'encoding'}); >+ my $old_marc = MARC::Record->new_from_xml(StripNonXmlChars($oldxml), 'UTF-8', $rowref->{'encoding'}, $marc_type); > foreach my $item_field ($old_marc->field($item_tag)) { > $old_marc->delete_field($item_field); > } >- $oldxml = $old_marc->as_xml(); >+ $oldxml = $old_marc->as_xml($marc_type); > > ModBiblio($marc_record, $recordid, $oldbiblio->{'frameworkcode'}); > $query = "UPDATE import_biblios SET matched_biblionumber = ? WHERE import_record_id = ?"; >@@ -725,12 +740,21 @@ sub BatchRevertRecords { > LEFT JOIN import_biblios ON (import_records.import_record_id=import_biblios.import_record_id) > WHERE import_batch_id = ?"); > $sth->execute($batch_id); >+ my $marc_type; >+ my $marcflavour = C4::Context->preference('marcflavour'); > while (my $rowref = $sth->fetchrow_hashref) { > $record_type = $rowref->{'record_type'}; > if ($rowref->{'status'} eq 'error' or $rowref->{'status'} eq 'reverted') { > $num_ignored++; > next; > } >+ if ($marcflavour eq 'UNIMARC' && $record_type eq 'auth') { >+ $marc_type = 'UNIMARCAUTH'; >+ } elsif ($marcflavour eq 'UNIMARC') { >+ $marc_type = 'UNIMARC'; >+ } else { >+ $marc_type = 'USMARC'; >+ } > > my $record_result = _get_revert_action($overlay_action, $rowref->{'overlay_status'}, $rowref->{'status'}); > >@@ -750,7 +774,7 @@ sub BatchRevertRecords { > } > } elsif ($record_result eq 'restore') { > $num_reverted++; >- my $old_record = MARC::Record->new_from_xml(StripNonXmlChars($rowref->{'marcxml_old'}), 'UTF-8', $rowref->{'encoding'}); >+ my $old_record = MARC::Record->new_from_xml(StripNonXmlChars($rowref->{'marcxml_old'}), 'UTF-8', $rowref->{'encoding'}, $marc_type); > if ($record_type eq 'biblio') { > my $biblionumber = $rowref->{'matched_biblionumber'}; > my ($count, $oldbiblio) = GetBiblio($biblionumber); >@@ -1321,13 +1345,13 @@ sub SetImportRecordMatches { > # internal functions > > sub _create_import_record { >- my ($batch_id, $record_sequence, $marc_record, $record_type, $encoding, $z3950random) = @_; >+ my ($batch_id, $record_sequence, $marc_record, $record_type, $encoding, $z3950random, $marc_type) = @_; > > my $dbh = C4::Context->dbh; > my $sth = $dbh->prepare("INSERT INTO import_records (import_batch_id, record_sequence, marc, marcxml, > record_type, encoding, z3950random) > VALUES (?, ?, ?, ?, ?, ?, ?)"); >- $sth->execute($batch_id, $record_sequence, $marc_record->as_usmarc(), $marc_record->as_xml(), >+ $sth->execute($batch_id, $record_sequence, $marc_record->as_usmarc(), $marc_record->as_xml($marc_type), > $record_type, $encoding, $z3950random); > my $import_record_id = $dbh->{'mysql_insertid'}; > $sth->finish(); >@@ -1335,12 +1359,12 @@ sub _create_import_record { > } > > sub _update_import_record_marc { >- my ($import_record_id, $marc_record) = @_; >+ my ($import_record_id, $marc_record, $marc_type) = @_; > > my $dbh = C4::Context->dbh; > my $sth = $dbh->prepare("UPDATE import_records SET marc = ?, marcxml = ? > WHERE import_record_id = ?"); >- $sth->execute($marc_record->as_usmarc(), $marc_record->as_xml(C4::Context->preference('marcflavour')), $import_record_id); >+ $sth->execute($marc_record->as_usmarc(), $marc_record->as_xml($marc_type), $import_record_id); > $sth->finish(); > } > >diff --git a/tools/manage-marc-import.pl b/tools/manage-marc-import.pl >index 6f78d50..32d3645 100755 >--- a/tools/manage-marc-import.pl >+++ b/tools/manage-marc-import.pl >@@ -60,7 +60,7 @@ my ($template, $loggedinuser, $cookie) > }); > > my %cookies = parse CGI::Cookie($cookie); >-my $sessionID = $cookies{'CGISESSID'}->value; >+our $sessionID = $cookies{'CGISESSID'}->value; > our $dbh = C4::Context->dbh; > > # Frameworks selection loop >-- >1.7.2.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 2060
:
10893
|
10894
|
10895
|
10899
|
10900
|
10901
|
10902
|
11258
|
11259
|
11260
|
12150
|
12151
|
12152
|
12195
|
12198
|
12213
|
12215
|
12218
|
12346
|
12347
| 12348