GetMarcBiblio
GetISBDView
GetMarcControlnumber
- GetMarcNotes
GetMarcISBN
GetMarcISSN
GetMarcSubjects
use C4::Charset;
use C4::Linker;
use C4::OAI::Sets;
-use C4::Debug;
+use Koha::Logger;
use Koha::Caches;
use Koha::Authority::Types;
use Koha::Acquisition::Currencies;
use Koha::Libraries;
use Koha::Util::MARC;
-use vars qw($debug $cgi_debug);
-
-
=head1 NAME
C4::Biblio - cataloging management functions
$defer_marc_save = 1;
}
- if (C4::Context->preference('BiblioAddsAuthorities')) {
- BiblioAutoLink( $record, $frameworkcode );
- }
+ my $schema = Koha::Database->schema;
+ my ( $biblionumber, $biblioitemnumber );
+ try {
+ $schema->txn_do(sub {
+
+ # transform the data into koha-table style data
+ SetUTF8Flag($record);
+ my $olddata = TransformMarcToKoha( $record, $frameworkcode );
+
+ my $biblio = Koha::Biblio->new(
+ {
+ frameworkcode => $frameworkcode,
+ author => $olddata->{author},
+ title => $olddata->{title},
+ subtitle => $olddata->{subtitle},
+ medium => $olddata->{medium},
+ part_number => $olddata->{part_number},
+ part_name => $olddata->{part_name},
+ unititle => $olddata->{unititle},
+ notes => $olddata->{notes},
+ serial =>
+ ( $olddata->{serial} || $olddata->{seriestitle} ? 1 : 0 ),
+ seriestitle => $olddata->{seriestitle},
+ copyrightdate => $olddata->{copyrightdate},
+ datecreated => \'NOW()',
+ abstract => $olddata->{abstract},
+ }
+ )->store;
+ $biblionumber = $biblio->biblionumber;
+ Koha::Exceptions::ObjectNotCreated->throw unless $biblio;
+
+ my ($cn_sort) = GetClassSort( $olddata->{'biblioitems.cn_source'}, $olddata->{'cn_class'}, $olddata->{'cn_item'} );
+ my $biblioitem = Koha::Biblioitem->new(
+ {
+ biblionumber => $biblionumber,
+ volume => $olddata->{volume},
+ number => $olddata->{number},
+ itemtype => $olddata->{itemtype},
+ isbn => $olddata->{isbn},
+ issn => $olddata->{issn},
+ publicationyear => $olddata->{publicationyear},
+ publishercode => $olddata->{publishercode},
+ volumedate => $olddata->{volumedate},
+ volumedesc => $olddata->{volumedesc},
+ collectiontitle => $olddata->{collectiontitle},
+ collectionissn => $olddata->{collectionissn},
+ collectionvolume => $olddata->{collectionvolume},
+ editionstatement => $olddata->{editionstatement},
+ editionresponsibility => $olddata->{editionresponsibility},
+ illus => $olddata->{illus},
+ pages => $olddata->{pages},
+ notes => $olddata->{bnotes},
+ size => $olddata->{size},
+ place => $olddata->{place},
+ lccn => $olddata->{lccn},
+ url => $olddata->{url},
+ cn_source => $olddata->{'biblioitems.cn_source'},
+ cn_class => $olddata->{cn_class},
+ cn_item => $olddata->{cn_item},
+ cn_suffix => $olddata->{cn_suff},
+ cn_sort => $cn_sort,
+ totalissues => $olddata->{totalissues},
+ ean => $olddata->{ean},
+ agerestriction => $olddata->{agerestriction},
+ }
+ )->store;
+ Koha::Exceptions::ObjectNotCreated->throw unless $biblioitem;
+ $biblioitemnumber = $biblioitem->biblioitemnumber;
- my ( $biblionumber, $biblioitemnumber, $error );
- my $dbh = C4::Context->dbh;
+ _koha_marc_update_bib_ids( $record, $frameworkcode, $biblionumber, $biblioitemnumber );
- # transform the data into koha-table style data
- SetUTF8Flag($record);
- my $olddata = TransformMarcToKoha( $record, $frameworkcode );
- ( $biblionumber, $error ) = _koha_add_biblio( $dbh, $olddata, $frameworkcode );
- $olddata->{'biblionumber'} = $biblionumber;
- ( $biblioitemnumber, $error ) = _koha_add_biblioitem( $dbh, $olddata );
+ # update MARC subfield that stores biblioitems.cn_sort
+ _koha_marc_update_biblioitem_cn_sort( $record, $olddata, $frameworkcode );
- _koha_marc_update_bib_ids( $record, $frameworkcode, $biblionumber, $biblioitemnumber );
-
- # update MARC subfield that stores biblioitems.cn_sort
- _koha_marc_update_biblioitem_cn_sort( $record, $olddata, $frameworkcode );
+ if (C4::Context->preference('BiblioAddsAuthorities')) {
+ BiblioAutoLink( $record, $frameworkcode );
+ }
- # now add the record
- ModBiblioMarc( $record, $biblionumber, $frameworkcode ) unless $defer_marc_save;
+ # now add the record
+ ModBiblioMarc( $record, $biblionumber ) unless $defer_marc_save;
- # update OAI-PMH sets
- if(C4::Context->preference("OAI-PMH:AutoUpdateSets")) {
- C4::OAI::Sets::UpdateOAISetsBiblio($biblionumber, $record);
- }
+ # update OAI-PMH sets
+ if(C4::Context->preference("OAI-PMH:AutoUpdateSets")) {
+ C4::OAI::Sets::UpdateOAISetsBiblio($biblionumber, $record);
+ }
- _after_biblio_action_hooks({ action => 'create', biblio_id => $biblionumber });
+ _after_biblio_action_hooks({ action => 'create', biblio_id => $biblionumber });
- logaction( "CATALOGUING", "ADD", $biblionumber, "biblio" ) if C4::Context->preference("CataloguingLog");
+ logaction( "CATALOGUING", "ADD", $biblionumber, "biblio" ) if C4::Context->preference("CataloguingLog");
+ });
+ } catch {
+ warn $_;
+ ( $biblionumber, $biblioitemnumber ) = ( undef, undef );
+ };
return ( $biblionumber, $biblioitemnumber );
}
_koha_marc_update_biblioitem_cn_sort( $record, $oldbiblio, $frameworkcode );
# update the MARC record (that now contains biblio and items) with the new record data
- &ModBiblioMarc( $record, $biblionumber, $frameworkcode );
+ &ModBiblioMarc( $record, $biblionumber );
# modify the other koha tables
_koha_modify_biblio( $dbh, $oldbiblio, $frameworkcode );
sub BiblioAutoLink {
my $record = shift;
my $frameworkcode = shift;
+ my $verbose = shift;
if (!$record) {
carp('Undefined record passed to BiblioAutoLink');
return 0;
my $linker = $linker_module->new(
{ 'options' => C4::Context->preference("LinkerOptions") } );
- my ( $headings_changed, undef ) =
- LinkBibHeadingsToAuthorities( $linker, $record, $frameworkcode, C4::Context->preference("CatalogModuleRelink") || '' );
+ my ( $headings_changed, $results ) =
+ LinkBibHeadingsToAuthorities( $linker, $record, $frameworkcode, C4::Context->preference("CatalogModuleRelink") || '', undef, $verbose );
# By default we probably don't want to relink things when cataloging
- return $headings_changed;
+ return $headings_changed, $results;
}
=head2 LinkBibHeadingsToAuthorities
- my $num_headings_changed, %results = LinkBibHeadingsToAuthorities($linker, $marc, $frameworkcode, [$allowrelink]);
+ my $num_headings_changed, %results = LinkBibHeadingsToAuthorities($linker, $marc, $frameworkcode, [$allowrelink, $tagtolink, $verbose]);
Links bib headings to authority records by checking
each authority-controlled field in the C<MARC::Record>
my $bib = shift;
my $frameworkcode = shift;
my $allowrelink = shift;
+ my $tagtolink = shift;
+ my $verbose = shift;
my %results;
if (!$bib) {
carp 'LinkBibHeadingsToAuthorities called on undefined bib record';
$allowrelink = 1 unless defined $allowrelink;
my $num_headings_changed = 0;
foreach my $field ( $bib->fields() ) {
+ if ( defined $tagtolink ) {
+ next unless $field->tag() == $tagtolink ;
+ }
my $heading = C4::Heading->new_from_field( $field, $frameworkcode );
next unless defined $heading;
if ( defined $current_link && (!$allowrelink || !C4::Context->preference('LinkerRelink')) )
{
$results{'linked'}->{ $heading->display_form() }++;
+ push(@{$results{'details'}}, { tag => $field->tag(), authid => $current_link, status => 'UNCHANGED'}) if $verbose;
next;
}
if ($authid) {
$results{ $fuzzy ? 'fuzzy' : 'linked' }
->{ $heading->display_form() }++;
- next if defined $current_link and $current_link == $authid;
+ if(defined $current_link and $current_link == $authid) {
+ push(@{$results{'details'}}, { tag => $field->tag(), authid => $current_link, status => 'UNCHANGED'}) if $verbose;
+ next;
+ }
$field->delete_subfield( code => '9' ) if defined $current_link;
$field->add_subfields( '9', $authid );
$num_headings_changed++;
+ push(@{$results{'details'}}, { tag => $field->tag(), authid => $authid, status => 'LOCAL_FOUND'}) if $verbose;
}
else {
+ my $authority_type = Koha::Authority::Types->find( $heading->auth_type() );
if ( defined $current_link
&& (!$allowrelink || C4::Context->preference('LinkerKeepStale')) )
{
$results{'fuzzy'}->{ $heading->display_form() }++;
+ push(@{$results{'details'}}, { tag => $field->tag(), authid => $current_link, status => 'UNCHANGED'}) if $verbose;
}
elsif ( C4::Context->preference('AutoCreateAuthorities') ) {
if ( _check_valid_auth_link( $current_link, $field ) ) {
$num_headings_changed++;
$linker->update_cache($heading, $authid);
$results{'added'}->{ $heading->display_form() }++;
+ push(@{$results{'details'}}, { tag => $field->tag(), authid => $authid, status => 'CREATED'}) if $verbose;
}
}
elsif ( defined $current_link ) {
if ( _check_valid_auth_link( $current_link, $field ) ) {
$results{'linked'}->{ $heading->display_form() }++;
+ push(@{$results{'details'}}, { tag => $field->tag(), authid => $authid, status => 'UNCHANGED'}) if $verbose;
}
else {
$field->delete_subfield( code => '9' );
$num_headings_changed++;
$results{'unlinked'}->{ $heading->display_form() }++;
+ push(@{$results{'details'}}, { tag => $field->tag(), authid => undef, status => 'NONE_FOUND', auth_type => $heading->auth_type(), tag_to_report => $authority_type->auth_tag_to_report}) if $verbose;
}
}
else {
$results{'unlinked'}->{ $heading->display_form() }++;
+ push(@{$results{'details'}}, { tag => $field->tag(), authid => undef, status => 'NONE_FOUND', auth_type => $heading->auth_type(), tag_to_report => $authority_type->auth_tag_to_report}) if $verbose;
}
}
}
+ push(@{$results{'details'}}, { tag => '', authid => undef, status => 'UNCHANGED'}) unless %results;
return $num_headings_changed, \%results;
}
my ( $authid, $field ) = @_;
require C4::AuthoritiesMarc;
- my $authorized_heading =
- C4::AuthoritiesMarc::GetAuthorizedHeading( { 'authid' => $authid } ) || '';
- return ($field->as_string('abcdefghijklmnopqrstuvwxyz') eq $authorized_heading);
+ return C4::AuthoritiesMarc::CompareFieldWithAuthority( { 'field' => $field, 'authid' => $authid } );
}
=head2 GetBiblioData
ORDER BY tagfield"
);
$sth->execute($frameworkcode);
- my ( $liblibrarian, $libopac, $tag, $res, $tab, $mandatory, $repeatable, $important, $ind1_defaultvalue, $ind2_defaultvalue );
+ my ( $liblibrarian, $libopac, $tag, $res, $mandatory, $repeatable, $important, $ind1_defaultvalue, $ind2_defaultvalue );
while ( ( $tag, $liblibrarian, $libopac, $mandatory, $repeatable, $important, $ind1_defaultvalue, $ind2_defaultvalue ) = $sth->fetchrow ) {
$res->{$tag}->{lib} = ( $forlibrarian or !$libopac ) ? $liblibrarian : $libopac;
$res->{$tag}->{ind2_defaultvalue} = $ind2_defaultvalue;
}
- $sth = $dbh->prepare(
- "SELECT tagfield,tagsubfield,liblibrarian,libopac,tab,mandatory,repeatable,authorised_value,authtypecode,value_builder,kohafield,seealso,hidden,isurl,link,defaultvalue,maxlength,important
- FROM marc_subfield_structure
- WHERE frameworkcode=?
- ORDER BY tagfield,tagsubfield
- "
- );
-
- $sth->execute($frameworkcode);
-
- my $subfield;
- my $authorised_value;
- my $authtypecode;
- my $value_builder;
- my $kohafield;
- my $seealso;
- my $hidden;
- my $isurl;
- my $link;
- my $defaultvalue;
- my $maxlength;
-
- while (
- ( $tag, $subfield, $liblibrarian, $libopac, $tab, $mandatory, $repeatable, $authorised_value,
- $authtypecode, $value_builder, $kohafield, $seealso, $hidden, $isurl, $link, $defaultvalue,
- $maxlength, $important
- )
- = $sth->fetchrow
- ) {
- $res->{$tag}->{$subfield}->{lib} = ( $forlibrarian or !$libopac ) ? $liblibrarian : $libopac;
- $res->{$tag}->{$subfield}->{tab} = $tab;
- $res->{$tag}->{$subfield}->{mandatory} = $mandatory;
- $res->{$tag}->{$subfield}->{important} = $important;
- $res->{$tag}->{$subfield}->{repeatable} = $repeatable;
- $res->{$tag}->{$subfield}->{authorised_value} = $authorised_value;
- $res->{$tag}->{$subfield}->{authtypecode} = $authtypecode;
- $res->{$tag}->{$subfield}->{value_builder} = $value_builder;
- $res->{$tag}->{$subfield}->{kohafield} = $kohafield;
- $res->{$tag}->{$subfield}->{seealso} = $seealso;
- $res->{$tag}->{$subfield}->{hidden} = $hidden;
- $res->{$tag}->{$subfield}->{isurl} = $isurl;
- $res->{$tag}->{$subfield}->{'link'} = $link;
- $res->{$tag}->{$subfield}->{defaultvalue} = $defaultvalue;
- $res->{$tag}->{$subfield}->{maxlength} = $maxlength;
+ my $mss = Koha::MarcSubfieldStructures->search( { frameworkcode => $frameworkcode } )->unblessed;
+ for my $m (@$mss) {
+ $res->{ $m->{tagfield} }->{ $m->{tagsubfield} } = {
+ lib => ( $forlibrarian or !$m->{libopac} ) ? $m->{liblibrarian} : $m->{libopac},
+ subfield => $m->{tagsubfield},
+ %$m
+ };
}
$cache->set_in_cache($cache_key, $res);
FROM marc_subfield_structure
WHERE tab > -1
AND frameworkcode = ?
- ORDER BY tagfield, tagsubfield
+ ORDER BY tagfield, display_order, tagsubfield
};
my $sth = C4::Context->dbh->prepare($query);
$sth->execute($frameworkcode);
FROM marc_subfield_structure
WHERE frameworkcode = ?
AND kohafield > ''
- ORDER BY frameworkcode,tagfield,tagsubfield
+ ORDER BY frameworkcode, tagfield, display_order, tagsubfield
|, { Slice => {} }, $frameworkcode );
# Now map the output to a hash structure
my $subfield_structure = {};
return \@marcissns;
} # end GetMarcISSN
-=head2 GetMarcNotes
-
- $marcnotesarray = GetMarcNotes( $record, $marcflavour );
-
- Get all notes from the MARC record and returns them in an array.
- The notes are stored in different fields depending on MARC flavour.
- MARC21 5XX $u subfields receive special attention as they are URIs.
-
-=cut
-
-sub GetMarcNotes {
- my ( $record, $marcflavour, $opac ) = @_;
- if (!$record) {
- carp 'GetMarcNotes called on undefined record';
- return;
- }
-
- my $scope = $marcflavour eq "UNIMARC"? '3..': '5..';
- my @marcnotes;
-
- #MARC21 specs indicate some notes should be private if first indicator 0
- my %maybe_private = (
- 541 => 1,
- 542 => 1,
- 561 => 1,
- 583 => 1,
- 590 => 1
- );
-
- my %hiddenlist = map { $_ => 1 }
- split( /,/, C4::Context->preference('NotesToHide'));
- foreach my $field ( $record->field($scope) ) {
- my $tag = $field->tag();
- next if $hiddenlist{ $tag };
- next if $opac && $maybe_private{$tag} && !$field->indicator(1);
- if( $marcflavour ne 'UNIMARC' && $field->subfield('u') ) {
- # Field 5XX$u always contains URI
- # Examples: 505u, 506u, 510u, 514u, 520u, 530u, 538u, 540u, 542u, 552u, 555u, 561u, 563u, 583u
- # We first push the other subfields, then all $u's separately
- # Leave further actions to the template (see e.g. opac-detail)
- my $othersub =
- join '', ( 'a' .. 't', 'v' .. 'z', '0' .. '9' ); # excl 'u'
- push @marcnotes, { marcnote => $field->as_string($othersub) };
- foreach my $sub ( $field->subfield('u') ) {
- $sub =~ s/^\s+|\s+$//g; # trim
- push @marcnotes, { marcnote => $sub };
- }
- } else {
- push @marcnotes, { marcnote => $field->as_string() };
- }
- }
- return \@marcnotes;
-}
-
=head2 GetMarcSubjects
$marcsubjcts = GetMarcSubjects($record,$marcflavour);
my ( $tags, $subfields, $values, $indicator, $ind_tag, $auth_type ) = @_;
# NOTE: The parameter $ind_tag is NOT USED -- BZ 11247
+ my ( $perm_loc_tag, $perm_loc_subfield ) = C4::Biblio::GetMarcFromKohaField( "items.permanent_location" );
+
my $xml = MARC::File::XML::header('UTF-8');
$xml .= "<record>\n";
$auth_type = C4::Context->preference('marcflavour') unless $auth_type;
my $j = -1;
my $close_last_tag;
for ( my $i = 0 ; $i < @$tags ; $i++ ) {
-
if ( C4::Context->preference('marcflavour') eq 'UNIMARC' and @$tags[$i] eq "100" and @$subfields[$i] eq "a" ) {
# if we have a 100 field and it's values are not correct, skip them.
@$values[$i] =~ s/"/"/g;
@$values[$i] =~ s/'/'/g;
+ my $skip = @$values[$i] eq q{};
+ $skip = 0
+ if $perm_loc_tag
+ && $perm_loc_subfield
+ && @$tags[$i] eq $perm_loc_tag
+ && @$subfields[$i] eq $perm_loc_subfield;
+
if ( ( @$tags[$i] ne $prevtag ) ) {
$close_last_tag = 0;
$j++ unless ( @$tags[$i] eq "" );
if ( !$first ) {
$xml .= "</datafield>\n";
if ( ( @$tags[$i] && @$tags[$i] > 10 )
- && ( @$values[$i] ne "" ) ) {
+ && ( !$skip ) ) {
$xml .= "<datafield tag=\"@$tags[$i]\" ind1=\"$ind1\" ind2=\"$ind2\">\n";
$xml .= "<subfield code=\"@$subfields[$i]\">@$values[$i]</subfield>\n";
$first = 0;
$first = 1;
}
} else {
- if ( @$values[$i] ne "" ) {
+ if ( !$skip ) {
# leader
if ( @$tags[$i] eq "000" ) {
}
}
} else { # @$tags[$i] eq $prevtag
- if ( @$values[$i] eq "" ) {
- } else {
+ if ( !$skip ) {
if ($first) {
my $str = ( $indicator->[$j] // q{} ) . ' '; # extra space prevents substr outside of string warn
my $ind1 = _default_ind_to_space( substr( $str, 0, 1 ) );
/xms ) { # the form 198-? occurred in Dutch ISBD rules
my $digits = $+{year};
$retval = $digits * ( 10 ** ( 4 - length($digits) ));
+ } else {
+ $retval = undef;
}
return $retval;
}
sub ModZebra {
my ( $record_number, $op, $server ) = @_;
- $debug && warn "ModZebra: updates requested for: $record_number $op $server\n";
+ Koha::Logger->get->debug("ModZebra: updates requested for: $record_number $op $server");
my $dbh = C4::Context->dbh;
# true ModZebra commented until indexdata fixes zebraDB crashes (it seems they occur on multiple updates
}
}
-=head2 _koha_add_biblio
-
- my ($biblionumber,$error) = _koha_add_biblio($dbh,$biblioitem);
-
-Internal function to add a biblio ($biblio is a hash with the values)
-
-=cut
-
-sub _koha_add_biblio {
- my ( $dbh, $biblio, $frameworkcode ) = @_;
-
- my $error;
-
- # set the series flag
- unless (defined $biblio->{'serial'}){
- $biblio->{'serial'} = 0;
- if ( $biblio->{'seriestitle'} ) { $biblio->{'serial'} = 1 }
- }
-
- my $query = "INSERT INTO biblio
- SET frameworkcode = ?,
- author = ?,
- title = ?,
- subtitle = ?,
- medium = ?,
- part_number = ?,
- part_name = ?,
- unititle =?,
- notes = ?,
- serial = ?,
- seriestitle = ?,
- copyrightdate = ?,
- datecreated=NOW(),
- abstract = ?
- ";
- my $sth = $dbh->prepare($query);
- $sth->execute(
- $frameworkcode, $biblio->{'author'}, $biblio->{'title'}, $biblio->{'subtitle'},
- $biblio->{'medium'}, $biblio->{'part_number'}, $biblio->{'part_name'}, $biblio->{'unititle'},
- $biblio->{'notes'}, $biblio->{'serial'}, $biblio->{'seriestitle'}, $biblio->{'copyrightdate'},
- $biblio->{'abstract'}
- );
-
- my $biblionumber = $dbh->{'mysql_insertid'};
- if ( $dbh->errstr ) {
- $error .= "ERROR in _koha_add_biblio $query" . $dbh->errstr;
- warn $error;
- }
-
- $sth->finish();
-
- #warn "LEAVING _koha_add_biblio: ".$biblionumber."\n";
- return ( $biblionumber, $error );
-}
-
=head2 _koha_modify_biblio
my ($biblionumber,$error) == _koha_modify_biblio($dbh,$biblio,$frameworkcode);
return ( $biblioitem->{'biblioitemnumber'}, $error );
}
-=head2 _koha_add_biblioitem
-
- my ($biblioitemnumber,$error) = _koha_add_biblioitem( $dbh, $biblioitem );
-
-Internal function to add a biblioitem
-
-=cut
-
-sub _koha_add_biblioitem {
- my ( $dbh, $biblioitem ) = @_;
- my $error;
-
- my ($cn_sort) = GetClassSort( $biblioitem->{'biblioitems.cn_source'}, $biblioitem->{'cn_class'}, $biblioitem->{'cn_item'} );
- my $query = "INSERT INTO biblioitems SET
- biblionumber = ?,
- volume = ?,
- number = ?,
- itemtype = ?,
- isbn = ?,
- issn = ?,
- publicationyear = ?,
- publishercode = ?,
- volumedate = ?,
- volumedesc = ?,
- collectiontitle = ?,
- collectionissn = ?,
- collectionvolume= ?,
- editionstatement= ?,
- editionresponsibility = ?,
- illus = ?,
- pages = ?,
- notes = ?,
- size = ?,
- place = ?,
- lccn = ?,
- url = ?,
- cn_source = ?,
- cn_class = ?,
- cn_item = ?,
- cn_suffix = ?,
- cn_sort = ?,
- totalissues = ?,
- ean = ?,
- agerestriction = ?
- ";
- my $sth = $dbh->prepare($query);
- $sth->execute(
- $biblioitem->{'biblionumber'}, $biblioitem->{'volume'}, $biblioitem->{'number'}, $biblioitem->{'itemtype'},
- $biblioitem->{'isbn'}, $biblioitem->{'issn'}, $biblioitem->{'publicationyear'}, $biblioitem->{'publishercode'},
- $biblioitem->{'volumedate'}, $biblioitem->{'volumedesc'}, $biblioitem->{'collectiontitle'}, $biblioitem->{'collectionissn'},
- $biblioitem->{'collectionvolume'}, $biblioitem->{'editionstatement'}, $biblioitem->{'editionresponsibility'}, $biblioitem->{'illus'},
- $biblioitem->{'pages'}, $biblioitem->{'bnotes'}, $biblioitem->{'size'}, $biblioitem->{'place'},
- $biblioitem->{'lccn'}, $biblioitem->{'url'}, $biblioitem->{'biblioitems.cn_source'},
- $biblioitem->{'cn_class'}, $biblioitem->{'cn_item'}, $biblioitem->{'cn_suffix'}, $cn_sort,
- $biblioitem->{'totalissues'}, $biblioitem->{'ean'}, $biblioitem->{'agerestriction'}
- );
- my $bibitemnum = $dbh->{'mysql_insertid'};
-
- if ( $dbh->errstr ) {
- $error .= "ERROR in _koha_add_biblioitem $query" . $dbh->errstr;
- warn $error;
- }
- $sth->finish();
- return ( $bibitemnum, $error );
-}
-
=head2 _koha_delete_biblio
$error = _koha_delete_biblio($dbh,$biblionumber);
=head2 ModBiblioMarc
- &ModBiblioMarc($newrec,$biblionumber,$frameworkcode);
+ &ModBiblioMarc($newrec,$biblionumber);
Add MARC XML data for a biblio to koha
sub ModBiblioMarc {
# pass the MARC::Record to this function, and it will create the records in
# the marcxml field
- my ( $record, $biblionumber, $frameworkcode ) = @_;
+ my ( $record, $biblionumber ) = @_;
if ( !$record ) {
carp 'ModBiblioMarc passed an undefined record';
return;
$record = $record->clone();
my $dbh = C4::Context->dbh;
my @fields = $record->fields();
- if ( !$frameworkcode ) {
- $frameworkcode = "";
- }
- my $sth = $dbh->prepare("UPDATE biblio SET frameworkcode=? WHERE biblionumber=?");
- $sth->execute( $frameworkcode, $biblionumber );
- $sth->finish;
my $encoding = C4::Context->preference("marcflavour");
# deal with UNIMARC field 100 (encoding) : create it if needed & set encoding to unicode