View | Details | Raw Unified | Return to bug 29560
Collapse All | Expand All

(-)a/Koha/Biblio.pm (-1 / +160 lines)
Lines 1476-1481 sub get_marc_hostinfo_only { Link Here
1476
    return $hostinfo;
1476
    return $hostinfo;
1477
}
1477
}
1478
1478
1479
=head3 link_marc_host
1480
1481
=cut
1482
1483
sub link_marc_host {
1484
    my ( $self, $params ) = @_;
1485
1486
    my $host = Koha::Biblios->find( $params->{biblionumber} );
1487
    return unless $host;
1488
1489
    my $marcflavour = C4::Context->preference('marcflavour');
1490
    my $marc_host = $host->metadata->record;
1491
    my %sfd;
1492
    my $field;
1493
    my $host_field;
1494
1495
    if ( $marcflavour eq 'MARC21' ) {
1496
        # Author
1497
        if ( $field =
1498
            $marc_host->field('100') || $marc_host->field('110') || $marc_host->field('111') )
1499
        {
1500
            my $s = $field->as_string('ab');
1501
            if ($s) {
1502
                $sfd{a} = $s;
1503
            }
1504
        }
1505
        # Title
1506
        if ( $field = $marc_host->field('245') ) {
1507
            my $s = $field->as_string('ab');
1508
            if ($s) {
1509
                $sfd{t} = $s;
1510
            }
1511
        }
1512
        # Uniform title
1513
        if ( $field = $marc_host->field('240') ) {
1514
            my $s = $field->as_string('a');
1515
            if ($s) {
1516
                $sfd{s} = $s;
1517
            }
1518
        }
1519
        # Publication
1520
        if ( $field = $marc_host->field('260') ) {
1521
            my $s = $field->as_string('abc');
1522
            if ($s) {
1523
                $sfd{d} = $s;
1524
            }
1525
        }
1526
        # Edition
1527
        if ( $field = $marc_host->field('250') ) {
1528
            my $s = $field->as_string('ab');
1529
            if ($s) {
1530
                $sfd{b} = $s;
1531
            }
1532
        }
1533
        # ISSN
1534
        if ( $field = $marc_host->field('022') ) {
1535
            my $s = $field->as_string('a');
1536
            if ($s) {
1537
                $sfd{x} = $s;
1538
            }
1539
        }
1540
        # ISBN
1541
        if ( $field = $marc_host->field('020') ) {
1542
            my $s = $field->as_string('a');
1543
            if ($s) {
1544
                $sfd{z} = $s;
1545
            }
1546
        }
1547
        if ( C4::Context->preference('UseControlNumber') ) {
1548
            # Control number
1549
            if ( $field = $marc_host->field('001') ) {
1550
                $sfd{w} = $field->data(),;
1551
            }
1552
            # Control number identifier
1553
            if ( $field = $marc_host->field('003') ) {
1554
                $sfd{w} = '('.$field->data().')'.$sfd{w};
1555
            }
1556
        }
1557
        $host_field = MARC::Field->new( 773, '0', ' ', %sfd );
1558
    }
1559
    elsif ( $marcflavour eq 'UNIMARC' ) {
1560
1561
        #author
1562
        if ( $field =
1563
            $marc_host->field('700') || $marc_host->field('710') || $marc_host->field('720') )
1564
        {
1565
            my $s = $field->as_string('ab');
1566
            if ($s) {
1567
                $sfd{a} = $s;
1568
            }
1569
        }
1570
1571
        #title
1572
        if ( $field = $marc_host->field('200') ) {
1573
            my $s = $field->as_string('a');
1574
            if ($s) {
1575
                $sfd{t} = $s;
1576
            }
1577
        }
1578
1579
        #place of publicaton
1580
        if ( $field = $marc_host->field('210') ) {
1581
            my $s = $field->as_string('a');
1582
            if ($s) {
1583
                $sfd{c} = $s;
1584
            }
1585
        }
1586
1587
        #date of publication
1588
        if ( $field = $marc_host->field('210') ) {
1589
            my $s = $field->as_string('d');
1590
            if ($s) {
1591
                $sfd{d} = $s;
1592
            }
1593
        }
1594
1595
        #edition statement
1596
        if ( $field = $marc_host->field('205') ) {
1597
            my $s = $field->as_string();
1598
            if ($s) {
1599
                $sfd{e} = $s;
1600
            }
1601
        }
1602
1603
        #URL
1604
        if ( $field = $marc_host->field('856') ) {
1605
            my $s = $field->as_string('u');
1606
            if ($s) {
1607
                $sfd{u} = $s;
1608
            }
1609
        }
1610
1611
        #ISSN
1612
        if ( $field = $marc_host->field('011') ) {
1613
            my $s = $field->as_string('a');
1614
            if ($s) {
1615
                $sfd{x} = $s;
1616
            }
1617
        }
1618
1619
        #ISBN
1620
        if ( $field = $marc_host->field('010') ) {
1621
            my $s = $field->as_string('a');
1622
            if ($s) {
1623
                $sfd{y} = $s;
1624
            }
1625
        }
1626
        if ( $field = $marc_host->field('001') ) {
1627
            $sfd{0} = $field->data(),;
1628
        }
1629
        $host_field = MARC::Field->new( 461, '0', ' ', %sfd );
1630
    }
1631
1632
    my $marc_record = $self->metadata->record;
1633
    $marc_record->append_fields($host_field);
1634
1635
    C4::Biblio::ModBiblioMarc($marc_record, $self->biblionumber);
1636
    return $self;
1637
}
1638
1479
=head3 recalls
1639
=head3 recalls
1480
1640
1481
    my $recalls = $biblio->recalls;
1641
    my $recalls = $biblio->recalls;
1482
- 

Return to bug 29560