Lines 1399-1405
sub AddAuthorityTrees{
Link Here
|
1399 |
|
1399 |
|
1400 |
=head2 merge |
1400 |
=head2 merge |
1401 |
|
1401 |
|
1402 |
$ref= &merge(mergefrom,$MARCfrom,$mergeto,$MARCto) |
1402 |
$ref= &merge(mergefrom,$MARCfrom,$mergeto,$MARCto,$overwrite) |
1403 |
|
1403 |
|
1404 |
Could add some feature : Migrating from a typecode to an other for instance. |
1404 |
Could add some feature : Migrating from a typecode to an other for instance. |
1405 |
Then we should add some new parameter : bibliotargettag, authtargettag |
1405 |
Then we should add some new parameter : bibliotargettag, authtargettag |
Lines 1407-1413
Then we should add some new parameter : bibliotargettag, authtargettag
Link Here
|
1407 |
=cut |
1407 |
=cut |
1408 |
|
1408 |
|
1409 |
sub merge { |
1409 |
sub merge { |
1410 |
my ($mergefrom,$MARCfrom,$mergeto,$MARCto) = @_; |
1410 |
my ($mergefrom,$MARCfrom,$mergeto,$MARCto,$overwrite) = @_; |
|
|
1411 |
$overwrite = C4::Context->preference('overwriteSubfieldsOnMerge') unless defined $overwrite; |
1411 |
my ($counteditedbiblio,$countunmodifiedbiblio,$counterrors)=(0,0,0); |
1412 |
my ($counteditedbiblio,$countunmodifiedbiblio,$counterrors)=(0,0,0); |
1412 |
my $dbh=C4::Context->dbh; |
1413 |
my $dbh=C4::Context->dbh; |
1413 |
my $authfrom = Koha::Authorities->find($mergefrom); |
1414 |
my $authfrom = Koha::Authorities->find($mergefrom); |
Lines 1483-1499
sub merge {
Link Here
|
1483 |
my $tag=$field->tag(); |
1484 |
my $tag=$field->tag(); |
1484 |
if ($auth_number==$mergefrom) { |
1485 |
if ($auth_number==$mergefrom) { |
1485 |
my $field_to=MARC::Field->new(($tag_to?$tag_to:$tag),$field->indicator(1),$field->indicator(2),"9"=>$mergeto); |
1486 |
my $field_to=MARC::Field->new(($tag_to?$tag_to:$tag),$field->indicator(1),$field->indicator(2),"9"=>$mergeto); |
1486 |
my $exclude='9'; |
1487 |
my $exclude='9'; |
1487 |
foreach my $subfield (grep {$_->[0] ne '9'} @record_to) { |
1488 |
foreach my $subfield (grep {$_->[0] ne '9'} @record_to) { |
1488 |
$field_to->add_subfields($subfield->[0] =>$subfield->[1]); |
1489 |
$field_to->add_subfields($subfield->[0] =>$subfield->[1]); |
1489 |
$exclude.= $subfield->[0]; |
1490 |
$exclude.= $subfield->[0]; |
1490 |
} |
1491 |
} |
1491 |
$exclude='['.$exclude.']'; |
1492 |
$exclude='['.$exclude.']'; |
1492 |
# add subfields in $field not included in @record_to |
1493 |
unless($overwrite) { |
1493 |
my @restore= grep {$_->[0]!~/$exclude/} $field->subfields(); |
1494 |
# add subfields in $field not included in @record_to |
1494 |
foreach my $subfield (@restore) { |
1495 |
my @restore= grep {$_->[0]!~/$exclude/} $field->subfields(); |
1495 |
$field_to->add_subfields($subfield->[0] =>$subfield->[1]); |
1496 |
foreach my $subfield (@restore) { |
1496 |
} |
1497 |
$field_to->add_subfields($subfield->[0] =>$subfield->[1]); |
|
|
1498 |
} |
1499 |
} |
1500 |
|
1497 |
$marcrecord->delete_field($field); |
1501 |
$marcrecord->delete_field($field); |
1498 |
$marcrecord->insert_grouped_field($field_to); |
1502 |
$marcrecord->insert_grouped_field($field_to); |
1499 |
$update=1; |
1503 |
$update=1; |