From b4016dbdc5dbf4d59bc8ee4e0f06598e0daff114 Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Thu, 6 Feb 2014 15:59:40 +0100 Subject: [PATCH] Bug 11700: C4::AuthoritiesMarc::merge enhancements/fixes Indentation and whitespace fixes Signed-off-by: Bernardo Gonzalez Kriegel Signed-off-by: Kyle M Hall --- C4/AuthoritiesMarc.pm | 103 ++++++++++++++------------------------------------ 1 file changed, 28 insertions(+), 75 deletions(-) diff --git a/C4/AuthoritiesMarc.pm b/C4/AuthoritiesMarc.pm index e14c85f..0d38042 100644 --- a/C4/AuthoritiesMarc.pm +++ b/C4/AuthoritiesMarc.pm @@ -1407,9 +1407,9 @@ Then we should add some new parameter : bibliotargettag, authtargettag =cut sub merge { - my ($mergefrom,$MARCfrom,$mergeto,$MARCto) = @_; + my ($mergefrom, $MARCfrom, $mergeto, $MARCto) = @_; my ($counteditedbiblio,$countunmodifiedbiblio,$counterrors)=(0,0,0); - my $dbh=C4::Context->dbh; + my $dbh = C4::Context->dbh; my $authfrom = Koha::Authorities->find($mergefrom); my $authto = Koha::Authorities->find($mergeto); my $authtypefrom = Koha::Authority::Types->find($authfrom->authtypecode); @@ -1425,7 +1425,7 @@ sub merge { @record_to = $MARCto->field($auth_tag_to_report_to)->subfields() if $MARCto->field($auth_tag_to_report_to); my @record_from; @record_from = $MARCfrom->field($auth_tag_to_report_from)->subfields() if $MARCfrom->field($auth_tag_to_report_from); - + my @reccache; # search all biblio tags using this authority. #Getting marcbiblios impacted by the change. @@ -1464,42 +1464,42 @@ sub merge { 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; - #warn $tag_to; - } + } # BulkEdit marc records - # May be used as a template for a bulkedit field + # May be used as a template for a bulkedit field foreach my $marcrecord(@reccache){ my $update = 0; foreach my $tagfield (@tags_using_authtype){ -# warn "tagfield : $tagfield "; 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(); + 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.']'; -# add subfields in $field not included in @record_to - my @restore= grep {$_->[0]!~/$exclude/} $field->subfields(); - foreach my $subfield (@restore) { - $field_to->add_subfields($subfield->[0] =>$subfield->[1]); - } - $marcrecord->delete_field($field); - $marcrecord->insert_grouped_field($field_to); - $update=1; + 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.']'; + #add subfields in $field not included in @record_to + my @restore= grep {$_->[0]!~/$exclude/} $field->subfields(); + foreach my $subfield (@restore) { + $field_to->add_subfields($subfield->[0] =>$subfield->[1]); + } + $marcrecord->delete_field($field); + $marcrecord->insert_grouped_field($field_to); + $update=1; } }#for each tag }#foreach tagfield + my ($bibliotag,$bibliosubf) = GetMarcFromKohaField("biblio.biblionumber","") ; my $biblionumber; if ($bibliotag<10){ @@ -1516,58 +1516,11 @@ sub merge { &ModBiblio($marcrecord,$biblionumber,GetFrameworkCode($biblionumber)) ; $counteditedbiblio++; warn $counteditedbiblio if (($counteditedbiblio % 10) and $ENV{DEBUG}); - } + } }#foreach $marc - return $counteditedbiblio; - # now, find every other authority linked with this authority - # now, find every other authority linked with this authority -# my $oConnection=C4::Context->Zconn("authorityserver"); -# my $query; -# # att 9210 Auth-Internal-authtype -# # att 9220 Auth-Internal-LN -# # ccl.properties to add for authorities -# $query= "= ".$mergefrom; -# my $oResult = $oConnection->search(new ZOOM::Query::CCL2RPN( $query, $oConnection )); -# my $count=$oResult->size() if ($oResult); -# my @reccache; -# my $z=0; -# while ( $z<$count ) { -# my $rec; -# $rec=$oResult->record($z); -# my $marcdata = $rec->raw(); -# push @reccache, $marcdata; -# $z++; -# } -# $oResult->destroy(); -# foreach my $marc(@reccache){ -# my $update; -# my $marcrecord; -# $marcrecord = MARC::File::USMARC::decode($marc); -# foreach my $tagfield (@tags_using_authtype){ -# $tagfield=substr($tagfield,0,3); -# my @tags = $marcrecord->field($tagfield); -# foreach my $tag (@tags){ -# my $tagsubs=$tag->subfield("9"); -# #warn "$tagfield:$tagsubs:$mergefrom"; -# if ($tagsubs== $mergefrom) { -# $tag->update("9" =>$mergeto); -# foreach my $subfield (@record_to) { -# # warn "$subfield,$subfield->[0],$subfield->[1]"; -# $tag->update($subfield->[0] =>$subfield->[1]); -# }#for $subfield -# } -# $marcrecord->delete_field($tag); -# $marcrecord->add_fields($tag); -# $update=1; -# }#for each tag -# }#foreach tagfield -# my $authoritynumber = TransformMarcToKoha($marcrecord,"") ; -# if ($update==1){ -# &ModAuthority($marcrecord,$authoritynumber,GetAuthTypeCode($authoritynumber)) ; -# } -# -# }#foreach $marc -}#sub + + return $counteditedbiblio; +} =head2 get_auth_type_location -- 2.1.4