[Koha-patches] [PATCH] bug 2505: more warnings fixes to C4/Biblio.pm
Galen Charlton
galen.charlton at liblime.com
Wed Jan 7 01:49:32 CET 2009
---
C4/Biblio.pm | 23 ++++++++++++++---------
1 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index b6bce41..d8d5dfe 100755
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -819,7 +819,7 @@ for the given frameworkcode
sub GetMarcFromKohaField {
my ( $kohafield, $frameworkcode ) = @_;
- return 0, 0 unless $kohafield;
+ return 0, 0 unless $kohafield and defined $frameworkcode;
my $relations = C4::Context->marcfromkohafield;
return (
$relations->{$frameworkcode}->{$kohafield}->[0],
@@ -905,6 +905,9 @@ sub GetAuthorisedValueDesc {
my $dbh = C4::Context->dbh;
if (!$category) {
+
+ return $value unless defined $tagslib->{$tag}->{$subfield}->{'authorised_value'};
+
#---- branch
if ( $tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "branches" ) {
return C4::Branch::GetBranchName($value);
@@ -1100,7 +1103,7 @@ sub GetMarcAuthors {
$value = GetAuthorisedValueDesc( $field->tag(), $authors_subfield->[0], $authors_subfield->[1], '', $tagslib ) if ( $marcflavour eq 'UNIMARC' and ($authors_subfield->[0] =~/4/));
my @this_link_loop = @link_loop;
my $separator = C4::Context->preference("authoritysep") unless $count_auth==0;
- push @subfields_loop, {code => $subfieldcode, value => $value, link_loop => \@this_link_loop, separator => $separator} unless ($authors_subfield->[0] == 9 );
+ push @subfields_loop, {code => $subfieldcode, value => $value, link_loop => \@this_link_loop, separator => $separator} unless ($authors_subfield->[0] eq '9' );
$count_auth++;
}
push @marcauthors, { MARCAUTHOR_SUBFIELDS_LOOP => \@subfields_loop };
@@ -1372,7 +1375,7 @@ sub TransformHtmlToXml {
my $prevtag = -1;
my $first = 1;
my $j = -1;
- for ( my $i = 0 ; $i <= @$tags ; $i++ ) {
+ 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.
# if we don't have any valid 100 field, we will create a default one at the end
@@ -1461,6 +1464,7 @@ sub TransformHtmlToXml {
}
$prevtag = @$tags[$i];
}
+ $xml .= "</datafield>\n" if @$tags > 0;
if (C4::Context->preference('marcflavour') eq 'UNIMARC' and !$unimarc_and_100_exist) {
# warn "SETTING 100 for $auth_type";
use POSIX qw(strftime);
@@ -1506,7 +1510,7 @@ sub TransformHtmlToXml {
sub TransformHtmlToMarc {
my $params = shift;
my $cgi = shift;
-
+
# explicitly turn on the UTF-8 flag for all
# 'tag_' parameters to avoid incorrect character
# conversion later on
@@ -1568,7 +1572,7 @@ sub TransformHtmlToMarc {
}
# > 009, deal with subfields
} else {
- while($params->[$j] =~ /_code_/){ # browse all it's subfield
+ while(defined $params->[$j] && $params->[$j] =~ /_code_/){ # browse all it's subfield
my $inner_param = $params->[$j];
if ($newfield){
if($cgi->param($params->[$j+1]) ne ''){ # only if there is a value (code => value)
@@ -1618,6 +1622,7 @@ sub TransformMarcToKoha {
my $result;
$limit_table=$limit_table||0;
+ $frameworkcode = '' unless defined $frameworkcode;
unless (defined $inverted_field_map) {
$inverted_field_map = _get_inverted_marc_field_map();
@@ -1675,8 +1680,8 @@ sub TransformMarcToKoha {
# modify copyrightdate to keep only the 1st year found
if (exists $result->{'copyrightdate'}) {
my $temp = $result->{'copyrightdate'};
- $temp =~ m/c(\d\d\d\d)/; # search cYYYY first
- if ( $1 > 0 ) {
+ $temp =~ m/c(\d\d\d\d)/;
+ if ( $temp =~ m/c(\d\d\d\d)/ and $1 > 0 ) { # search cYYYY first
$result->{'copyrightdate'} = $1;
}
else { # if no cYYYY, get the 1st date.
@@ -1688,8 +1693,7 @@ sub TransformMarcToKoha {
# modify publicationyear to keep only the 1st year found
if (exists $result->{'publicationyear'}) {
my $temp = $result->{'publicationyear'};
- $temp =~ m/c(\d\d\d\d)/; # search cYYYY first
- if ( $1 > 0 ) {
+ if ( $temp =~ m/c(\d\d\d\d)/ and $1 > 0 ) { # search cYYYY first
$result->{'publicationyear'} = $1;
}
else { # if no cYYYY, get the 1st date.
@@ -1707,6 +1711,7 @@ sub _get_inverted_marc_field_map {
foreach my $frameworkcode (keys %{ $relations }) {
foreach my $kohafield (keys %{ $relations->{$frameworkcode} }) {
+ next unless @{ $relations->{$frameworkcode}->{$kohafield} }; # not all columns are mapped to MARC tag & subfield
my $tag = $relations->{$frameworkcode}->{$kohafield}->[0];
my $subfield = $relations->{$frameworkcode}->{$kohafield}->[1];
my ($table, $column) = split /[.]/, $kohafield, 2;
--
1.5.5.GIT
More information about the Koha-patches
mailing list