# to get something
push @EXPORT, qw(
- &Get
&GetBiblio
&GetBiblioData
&GetBiblioItemData
# Others functions
push @EXPORT, qw(
&TransformMarcToKoha
- &TransformHtmlToMarc2
&TransformHtmlToMarc
&TransformHtmlToXml
prepare_host_field
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);
require C4::Reserves;
my ($count, $reserves) = C4::Reserves::GetReservesFromBiblionumber($biblionumber);
foreach my $res ( @$reserves ) {
- C4::Reserves::CancelReserve( $res->{'biblionumber'}, $res->{'itemnumber'}, $res->{'borrowernumber'} );
+ C4::Reserves::CancelReserve({ reserve_id => $res->{'reserve_id'} });
}
# Delete in Zebra. Be careful NOT to move this line after _koha_delete_biblio
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 = "600";
- $maxtag = "619";
- $fields_filter = '6..';
+ $mintag = "225";
+ $maxtag = "225";
+ $fields_filter = '2..';
} else { # marc21/normarc
$mintag = "440";
$maxtag = "490";
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);