Bugzilla – Attachment 56474 Details for
Bug 11700
C4::AuthoritiesMarc::merge enhancements/fixes
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 11700 [QA Followup] - Tidy merge a bit, fix warning triggered during unit tests
Bug-11700-QA-Followup---Tidy-merge-a-bit-fix-warni.patch (text/plain), 8.69 KB, created by
Julian Maurice
on 2016-10-14 08:18:28 UTC
(
hide
)
Description:
Bug 11700 [QA Followup] - Tidy merge a bit, fix warning triggered during unit tests
Filename:
MIME Type:
Creator:
Julian Maurice
Created:
2016-10-14 08:18:28 UTC
Size:
8.69 KB
patch
obsolete
>From 38f6696d7dacad25289535ba8d655df171f71e78 Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Fri, 20 Nov 2015 14:41:55 +0000 >Subject: [PATCH] Bug 11700 [QA Followup] - Tidy merge a bit, fix warning > triggered during unit tests > >Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> >--- > C4/AuthoritiesMarc.pm | 120 ++++++++++++++++++++++++++++++-------------------- > 1 file changed, 73 insertions(+), 47 deletions(-) > >diff --git a/C4/AuthoritiesMarc.pm b/C4/AuthoritiesMarc.pm >index 4756a9d..0fe1e76 100644 >--- a/C4/AuthoritiesMarc.pm >+++ b/C4/AuthoritiesMarc.pm >@@ -666,11 +666,12 @@ sub AddAuthority { > my $auth_exists=0; > my $oldRecord; > if (!$authid) { >- my $sth=$dbh->prepare("select max(authid) from auth_header"); >+ my $sth = $dbh->prepare("select max(authid) from auth_header"); > $sth->execute; >- ($authid)=$sth->fetchrow; >- $authid=$authid+1; >- ##Insert the recordID in MARC record >+ ($authid) = $sth->fetchrow || 0; >+ $authid++; >+ >+ # Insert the recordID in MARC record > unless ($record->field('001') && $record->field('001')->data() eq $authid){ > $record->delete_field($record->field('001')); > $record->insert_fields_ordered(MARC::Field->new('001',$authid)); >@@ -1409,7 +1410,8 @@ Returns a list of biblionumbers of records that were modified. > =cut > > sub merge { >- my ($mergefrom, $MARCfrom, $mergeto, $MARCto) = @_; >+ my ( $mergefrom, $MARCfrom, $mergeto, $MARCto ) = @_; >+ > my @editedbiblios; > my $dbh = C4::Context->dbh; > my $authfrom = Koha::Authorities->find($mergefrom); >@@ -1418,10 +1420,14 @@ sub merge { > my $authtypeto = Koha::Authority::Types->find($authto->authtypecode); > > $MARCfrom ||= GetAuthority($mergefrom); >- $MARCto ||= GetAuthority($mergeto); >+ $MARCto ||= GetAuthority($mergeto); >+ >+ # return if authority does not exist >+ return "error MARCFROM not a marcrecord " . Data::Dumper::Dumper($MARCfrom) >+ if scalar( $MARCfrom->fields() ) == 0; >+ return "error MARCTO not a marcrecord" . Data::Dumper::Dumper($MARCto) >+ if scalar( $MARCto->fields() ) == 0; > >- return "error MARCFROM not a marcrecord ".Data::Dumper::Dumper($MARCfrom) if scalar($MARCfrom->fields()) == 0; >- return "error MARCTO not a marcrecord".Data::Dumper::Dumper($MARCto) if scalar($MARCto->fields()) == 0; > # search the tag to report > my $auth_tag_to_report_from = $authtypefrom->auth_tag_to_report; > my $auth_tag_to_report_to = $authtypeto->auth_tag_to_report; >@@ -1433,95 +1439,115 @@ sub merge { > > my @reccache; > # search all biblio tags using this authority. >- #Getting marcbiblios impacted by the change. >- #zebra connection >- my $oConnection=C4::Context->Zconn("biblioserver",0); >+ # Getting marcbiblios impacted by the change. >+ # zebra connection >+ my $oConnection = C4::Context->Zconn( "biblioserver", 0 ); > # We used to use XML syntax here, but that no longer works. > # Thankfully, we don't need it. >- my $query; >- $query= "an=".$mergefrom; >+ my $query = "an=" . $mergefrom; >+ > my $oResult = $oConnection->search(new ZOOM::Query::CCL2RPN( $query, $oConnection )); > my $count = 0; >- if ($oResult) { >- $count=$oResult->size(); >+ if ($oResult) { >+ $count = $oResult->size(); > } >- my $z=0; >- while ( $z<$count ) { >+ >+ my $z = 0; >+ while ( $z < $count ) { > my $marcrecordzebra = C4::Search::new_record_from_zebra( > 'biblioserver', > $oResult->record($z)->raw() > ); >+ > my ( $biblionumbertagfield, $biblionumbertagsubfield ) = &GetMarcFromKohaField( "biblio.biblionumber", '' ); >+ > my $i = ($biblionumbertagfield < 10) > ? $marcrecordzebra->field( $biblionumbertagfield )->data > : $marcrecordzebra->subfield( $biblionumbertagfield, $biblionumbertagsubfield ); >+ > my $marcrecorddb = GetMarcBiblio($i); >+ > push @reccache, $marcrecorddb; > $z++; > } >+ > $oResult->destroy(); >+ > #warn scalar(@reccache)." biblios to update"; > # Get All candidate Tags for the change > # (This will reduce the search scope in marc records). > my $sth = $dbh->prepare("select distinct tagfield from marc_subfield_structure where authtypecode=?"); > $sth->execute($authtypefrom->authtypecode); > my @tags_using_authtype; >- while (my ($tagfield) = $sth->fetchrow) { >- push @tags_using_authtype,$tagfield ; >+ while ( my ($tagfield) = $sth->fetchrow ) { >+ push @tags_using_authtype, $tagfield; > } >- my $tag_to=0; >+ my $tag_to = 0; >+ > if ($authtypeto->authtypecode ne $authtypefrom->authtypecode){ > # If many tags, take the first > $sth->execute($authtypeto->authtypecode); >- $tag_to=$sth->fetchrow; >+ $tag_to = $sth->fetchrow; > } >+ > # BulkEdit marc records > # May be used as a template for a bulkedit field > foreach my $marcrecord(@reccache){ > my $update = 0; >- foreach my $tagfield (@tags_using_authtype){ >- foreach my $field ($marcrecord->field($tagfield)){ >- # biblio is linked to authority with $9 subfield containing authid >- my $auth_number=$field->subfield("9"); >- my $tag=$field->tag(); >- if ($auth_number==$mergefrom) { >- my $field_to = MARC::Field->new(($tag_to?$tag_to:$tag), >- $field->indicator(1),$field->indicator(2),"9"=>$mergeto); >- my $exclude='9'; >- foreach my $subfield (grep {$_->[0] ne '9'} @record_to) { >- $field_to->add_subfields($subfield->[0] =>$subfield->[1]); >- $exclude.= $subfield->[0]; >+ foreach my $tagfield (@tags_using_authtype) { >+ foreach my $field ( $marcrecord->field($tagfield) ) { >+ >+ # biblio is linked to authority with $9 subfield containing authid >+ my $auth_number = $field->subfield("9"); >+ my $tag = $field->tag(); >+ if ( $auth_number == $mergefrom ) { >+ my $field_to = MARC::Field->new( >+ ( $tag_to ? $tag_to : $tag ), $field->indicator(1), >+ $field->indicator(2), "9" => $mergeto >+ ); >+ my $exclude = '9'; >+ foreach my $subfield ( grep { $_->[0] ne '9' } @record_to ) >+ { >+ $field_to->add_subfields( >+ $subfield->[0] => $subfield->[1] ); >+ $exclude .= $subfield->[0]; > } >- $exclude='['.$exclude.']'; >+ $exclude = '[' . $exclude . ']'; >+ > #add subfields in $field not included in @record_to >- my @restore= grep {$_->[0]!~/$exclude/} $field->subfields(); >+ my @restore = >+ grep { $_->[0] !~ /$exclude/ } $field->subfields(); > foreach my $subfield (@restore) { >- $field_to->add_subfields($subfield->[0] =>$subfield->[1]); >+ $field_to->add_subfields( >+ $subfield->[0] => $subfield->[1] ); > } > $marcrecord->delete_field($field); > $marcrecord->insert_grouped_field($field_to); >- $update=1; >+ $update = 1; > } >- }#for each tag >- }#foreach tagfield >+ } #for each tag >+ } #foreach tagfield > > my ($bibliotag,$bibliosubf) = GetMarcFromKohaField("biblio.biblionumber","") ; > my $biblionumber; >- if ($bibliotag<10){ >- $biblionumber=$marcrecord->field($bibliotag)->data; >+ >+ if ( $bibliotag < 10 ) { >+ $biblionumber = $marcrecord->field($bibliotag)->data; > } > else { >- $biblionumber=$marcrecord->subfield($bibliotag,$bibliosubf); >+ $biblionumber = $marcrecord->subfield( $bibliotag, $bibliosubf ); > } >- unless ($biblionumber){ >- warn "pas de numéro de notice bibliographique dans : ".$marcrecord->as_formatted; >+ >+ unless ($biblionumber) { >+ warn "No biblionumber found for record: " . $marcrecord->as_formatted; > next; > } >- if ($update==1){ >- &ModBiblio($marcrecord,$biblionumber,GetFrameworkCode($biblionumber)) ; >+ >+ if ( $update == 1 ) { >+ &ModBiblio( $marcrecord, $biblionumber, GetFrameworkCode($biblionumber) ); > push @editedbiblios, $biblionumber; > } >- }#foreach $marc >+ } #foreach $marc > > if ( $mergefrom != $mergeto ) { > my $number_of_authorities_deleted = DelAuthority($mergefrom); >-- >2.1.4
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 11700
:
25086
|
25413
|
25414
|
25426
|
27970
|
27971
|
27972
|
27973
|
28176
|
28177
|
35107
|
39264
|
39265
|
39266
|
39267
|
39268
|
39269
|
40968
|
40969
|
40970
|
40971
|
40972
|
45048
|
45049
|
45050
|
45051
|
45052
|
45053
|
46397
|
46398
|
46399
|
46400
|
46401
|
46402
|
56469
|
56470
|
56471
|
56472
|
56473
| 56474