my $frameworkcode = shift;
my $options = @_ ? shift : undef;
my $defer_marc_save = 0;
+ if (!$record) {
+ carp('AddBiblio called with undefined record');
+ return;
+ }
if ( defined $options and exists $options->{'defer_marc_save'} and $options->{'defer_marc_save'} ) {
$defer_marc_save = 1;
}
which fields are used to store embedded item, biblioitem,
and biblionumber data for indexing.
+Returns 1 on success 0 on failure
+
=cut
sub ModBiblio {
my ( $record, $biblionumber, $frameworkcode ) = @_;
- croak "No record" unless $record;
+ if (!$record) {
+ carp 'No record passed to ModBiblio';
+ return 0;
+ }
if ( C4::Context->preference("CataloguingLog") ) {
my $newrecord = GetMarcBiblio($biblionumber);
Automatically links headings in a bib record to authorities.
+Returns the number of headings changed
+
=cut
sub BiblioAutoLink {
my $record = shift;
my $frameworkcode = shift;
+ if (!$record) {
+ carp('Undefined record passed to BiblioAutoLink');
+ return 0;
+ }
my ( $num_headings_changed, %results );
my $linker_module =
unless ( can_load( modules => { $linker_module => undef } ) ) {
$linker_module = 'C4::Linker::Default';
unless ( can_load( modules => { $linker_module => undef } ) ) {
- return 0, 0;
+ return 0;
}
}
my $frameworkcode = shift;
my $allowrelink = shift;
my %results;
+ if (!$bib) {
+ carp 'LinkBibHeadingsToAuthorities called on undefined bib record';
+ return ( 0, {});
+ }
require C4::Heading;
require C4::AuthoritiesMarc;
sub GetRecordValue {
my ( $field, $record, $frameworkcode ) = @_;
+
+ if (!$record) {
+ carp 'GetRecordValue called with undefined record';
+ return;
+ }
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare('SELECT fieldcode, subfieldcode FROM fieldmapping WHERE frameworkcode = ? AND field = ?');
# get the coin format
if ( ! $record ) {
- return;
+ carp 'GetCOinSBiblio called with undefined record';
+ return;
}
my $pos7 = substr $record->leader(), 7, 1;
my $pos6 = substr $record->leader(), 6, 1;
=head2 GetMarcPrice
return the prices in accordance with the Marc format.
+
+returns 0 if no price found
+returns undef if called without a marc record or with
+an unrecognized marc format
+
=cut
sub GetMarcPrice {
my ( $record, $marcflavour ) = @_;
+ if (!$record) {
+ carp 'GetMarcPrice called on undefined record';
+ return;
+ }
+
my @listtags;
my $subfield;
return the quantity of a book. Used in acquisition only, when importing a file an iso2709 from a bookseller
Warning : this is not really in the marc standard. In Unimarc, Electre (the most widely used bookseller) use the 969$a
+returns 0 if no quantity found
+returns undef if called without a marc record or with
+an unrecognized marc format
+
=cut
sub GetMarcQuantity {
my ( $record, $marcflavour ) = @_;
+ if (!$record) {
+ carp 'GetMarcQuantity called on undefined record';
+ return;
+ }
+
my @listtags;
my $subfield;
sub GetMarcControlnumber {
my ( $record, $marcflavour ) = @_;
+ if (!$record) {
+ carp 'GetMarcControlnumber called on undefined record';
+ return;
+ }
my $controlnumber = "";
# Control number or Record identifier are the same field in MARC21, UNIMARC and NORMARC
# Keep $marcflavour for possible later use
sub GetMarcISBN {
my ( $record, $marcflavour ) = @_;
+ if (!$record) {
+ carp 'GetMarcISBN called on undefined record';
+ return;
+ }
my $scope;
if ( $marcflavour eq "UNIMARC" ) {
$scope = '010';
sub GetMarcISSN {
my ( $record, $marcflavour ) = @_;
+ if (!$record) {
+ carp 'GetMarcISSN called on undefined record';
+ return;
+ }
my $scope;
if ( $marcflavour eq "UNIMARC" ) {
$scope = '011';
sub GetMarcNotes {
my ( $record, $marcflavour ) = @_;
+ if (!$record) {
+ carp 'GetMarcNotes called on undefined record';
+ return;
+ }
my $scope;
if ( $marcflavour eq "UNIMARC" ) {
$scope = '3..';
sub GetMarcSubjects {
my ( $record, $marcflavour ) = @_;
+ if (!$record) {
+ carp 'GetMarcSubjects called on undefined record';
+ return;
+ }
my ( $mintag, $maxtag, $fields_filter );
if ( $marcflavour eq "UNIMARC" ) {
$mintag = "600";
sub GetMarcAuthors {
my ( $record, $marcflavour ) = @_;
+ if (!$record) {
+ carp 'GetMarcAuthors called on undefined record';
+ return;
+ }
my ( $mintag, $maxtag, $fields_filter );
# tagslib useful for UNIMARC author reponsabilities
sub GetMarcUrls {
my ( $record, $marcflavour ) = @_;
+ if (!$record) {
+ carp 'GetMarcUrls called on undefined record';
+ return;
+ }
my @marcurls;
for my $field ( $record->field('856') ) {
sub GetMarcSeries {
my ( $record, $marcflavour ) = @_;
+ if (!$record) {
+ carp 'GetMarcSeries called on undefined record';
+ return;
+ }
+
my ( $mintag, $maxtag, $fields_filter );
if ( $marcflavour eq "UNIMARC" ) {
$mintag = "225";
sub GetMarcHosts {
my ( $record, $marcflavour ) = @_;
+ if (!$record) {
+ carp 'GetMarcHosts called on undefined record';
+ return;
+ }
+
my ( $tag,$title_subf,$bibnumber_subf,$itemnumber_subf);
$marcflavour ||="MARC21";
if ( $marcflavour eq "MARC21" || $marcflavour eq "NORMARC" ) {
Extract data from a MARC bib record into a hashref representing
Koha biblio, biblioitems, and items fields.
+If passed an undefined record will log the error and return an empty
+hash_ref
+
=cut
sub TransformMarcToKoha {
my ( $dbh, $record, $frameworkcode, $limit_table ) = @_;
- my $result;
+ my $result = {};
+ if (!defined $record) {
+ carp('TransformMarcToKoha called with undefined record');
+ return $result;
+ }
$limit_table = $limit_table || 0;
$frameworkcode = '' unless defined $frameworkcode;
sub EmbedItemsInMarcBiblio {
my ($marc, $biblionumber, $itemnumbers) = @_;
- croak "No MARC record" unless $marc;
+ if ( !$marc ) {
+ carp 'EmbedItemsInMarcBiblio: No MARC record passed';
+ return;
+ }
$itemnumbers = [] unless defined $itemnumbers;
# pass the MARC::Record to this function, and it will create the records in
# the marc field
my ( $record, $biblionumber, $frameworkcode ) = @_;
+ if ( !$record ) {
+ carp 'ModBiblioMarc passed an undefined record';
+ return;
+ }
# Clone record as it gets modified
$record = $record->clone();
sub RemoveAllNsb {
my $record = shift;
+ if (!$record) {
+ carp 'RemoveAllNsb called with undefined record';
+ return;
+ }
SetUTF8Flag($record);
--- /dev/null
+#!/usr/bin/perl
+#
+use strict;
+use warnings;
+
+use Test::More tests => 22;
+
+BEGIN {
+ use_ok('C4::Biblio');
+}
+
+# test returns if undef record passed
+# carp messages appear on stdout
+
+my @arr = AddBiblio(undef, q{});
+my $elements = @arr;
+
+is($elements, 0, 'Add Biblio returns empty array for undef record');
+
+my $ret = ModBiblio(undef, 0, '');
+
+is( $ret, 0, 'ModBiblio returns zero if not passed rec');
+
+$ret = BiblioAutoLink(undef, q{});
+
+is( $ret, 0, 'BiblioAutoLink returns zero if not passed rec');
+
+$ret = GetRecordValue('100', undef, q{});
+ok( !defined $ret, 'GetRecordValue returns undef if not passed rec');
+
+@arr = LinkBibHeadingsToAuthorities(q{}, q{});
+is($arr[0], 0, 'LinkBibHeadingsToAuthorities correct error return');
+
+$ret = GetCOinSBiblio();
+ok( !defined $ret, 'GetCOinSBiblio returns undef if not passed rec');
+
+$ret = GetMarcPrice(undef, 'MARC21');
+ok( !defined $ret, 'GetMarcPrice returns undef if not passed rec');
+
+$ret = GetMarcQuantity(undef, 'MARC21');
+ok( !defined $ret, 'GetMarcQuantity returns undef if not passed rec');
+
+$ret = GetMarcControlnumber();
+ok( !defined $ret, 'GetMarcControlnumber returns undef if not passed rec');
+
+$ret = GetMarcISBN();
+ok( !defined $ret, 'GetMarcISBN returns undef if not passed rec');
+
+$ret = GetMarcISSN();
+ok( !defined $ret, 'GetMarcISSN returns undef if not passed rec');
+
+$ret = GetMarcNotes();
+ok( !defined $ret, 'GetMarcNotes returns undef if not passed rec');
+
+$ret = GetMarcSubjects();
+ok( !defined $ret, 'GetMarcSubjects returns undef if not passed rec');
+
+$ret = GetMarcAuthors();
+ok( !defined $ret, 'GetMarcAuthors returns undef if not passed rec');
+
+$ret = GetMarcUrls();
+ok( !defined $ret, 'GetMarcUrls returns undef if not passed rec');
+
+$ret = GetMarcSeries();
+ok( !defined $ret, 'GetMarcSeries returns undef if not passed rec');
+
+$ret = GetMarcHosts();
+ok( !defined $ret, 'GetMarcHosts returns undef if not passed rec');
+
+my $hash_ref = TransformMarcToKoha(undef, undef);
+
+isa_ok( $hash_ref, 'HASH');
+
+$elements = keys %{$hash_ref};
+
+is($elements, 0, 'Empty hashref returned for undefined record in TransformMarcToKoha');
+
+$ret = ModBiblioMarc();
+ok( !defined $ret, 'ModBiblioMarc returns undef if not passed rec');
+
+$ret = RemoveAllNsb();
+ok( !defined $ret, 'RemoveAllNsb returns undef if not passed rec');