Bug 6875 de-nesting C4::Items
[koha_gimpoz] / C4 / Koha.pm
index 95244bd..976b46a 100644 (file)
@@ -23,10 +23,7 @@ package C4::Koha;
 use strict;
 #use warnings; FIXME - Bug 2505
 use C4::Context;
-use C4::Output;
-use URI::Split qw(uri_split);
 use Memoize;
-use Business::ISBN;
 
 use vars qw($VERSION @ISA @EXPORT $DEBUG);
 
@@ -472,8 +469,9 @@ sub getitemtypeimagelocation($$) {
        my ( $src, $image ) = @_;
 
        return '' if ( !$image );
+    require URI::Split;
 
-       my $scheme = ( uri_split( $image ) )[0];
+       my $scheme = ( URI::Split::uri_split( $image ) )[0];
 
        return $image if ( $scheme );
 
@@ -573,9 +571,8 @@ sub getImageSets {
 
     my @imagesets = (); # list of hasrefs of image set data to pass to template
     my @subdirectories = _getSubdirectoryNames( $paths->{'staff'}{'filesystem'} );
-warn $paths->{'staff'}{'filesystem'};
     foreach my $imagesubdir ( @subdirectories ) {
-       warn $imagesubdir;
+    warn $imagesubdir if $DEBUG;
         my @imagelist     = (); # hashrefs of image info
         my @imagenames = _getImagesFromDirectory( File::Spec->catfile( $paths->{'staff'}{'filesystem'}, $imagesubdir ) );
         my $imagesetactive = 0;
@@ -1203,21 +1200,22 @@ sub GetNormalizedUPC {
  my ($record,$marcflavour) = @_;
     my (@fields,$upc);
 
-    if ($marcflavour eq 'MARC21') {
-        @fields = $record->field('024');
+    if ($marcflavour eq 'UNIMARC') {
+        @fields = $record->field('072');
         foreach my $field (@fields) {
-            my $indicator = $field->indicator(1);
             my $upc = _normalize_match_point($field->subfield('a'));
-            if ($indicator == 1 and $upc ne '') {
+            if ($upc ne '') {
                 return $upc;
             }
         }
+
     }
-    else { # assume unimarc if not marc21
-        @fields = $record->field('072');
+    else { # assume marc21 if not unimarc
+        @fields = $record->field('024');
         foreach my $field (@fields) {
+            my $indicator = $field->indicator(1);
             my $upc = _normalize_match_point($field->subfield('a'));
-            if ($upc ne '') {
+            if ($indicator == 1 and $upc ne '') {
                 return $upc;
             }
         }
@@ -1237,10 +1235,10 @@ sub GetNormalizedISBN {
     }
     return undef unless $record;
 
-    if ($marcflavour eq 'MARC21') {
-        @fields = $record->field('020');
+    if ($marcflavour eq 'UNIMARC') {
+        @fields = $record->field('010');
         foreach my $field (@fields) {
-            $isbn = $field->subfield('a');
+            my $isbn = $field->subfield('a');
             if ($isbn) {
                 return _isbn_cleanup($isbn);
             } else {
@@ -1248,10 +1246,10 @@ sub GetNormalizedISBN {
             }
         }
     }
-    else { # assume unimarc if not marc21
-        @fields = $record->field('010');
+    else { # assume marc21 if not unimarc
+        @fields = $record->field('020');
         foreach my $field (@fields) {
-            my $isbn = $field->subfield('a');
+            $isbn = $field->subfield('a');
             if ($isbn) {
                 return _isbn_cleanup($isbn);
             } else {
@@ -1259,28 +1257,27 @@ sub GetNormalizedISBN {
             }
         }
     }
-
 }
 
 sub GetNormalizedEAN {
     my ($record,$marcflavour) = @_;
     my (@fields,$ean);
 
-    if ($marcflavour eq 'MARC21') {
-        @fields = $record->field('024');
+    if ($marcflavour eq 'UNIMARC') {
+        @fields = $record->field('073');
         foreach my $field (@fields) {
-            my $indicator = $field->indicator(1);
             $ean = _normalize_match_point($field->subfield('a'));
-            if ($indicator == 3 and $ean ne '') {
+            if ($ean ne '') {
                 return $ean;
             }
         }
     }
-    else { # assume unimarc if not marc21
-        @fields = $record->field('073');
+    else { # assume marc21 if not unimarc
+        @fields = $record->field('024');
         foreach my $field (@fields) {
+            my $indicator = $field->indicator(1);
             $ean = _normalize_match_point($field->subfield('a'));
-            if ($ean ne '') {
+            if ($indicator == 3 and $ean ne '') {
                 return $ean;
             }
         }
@@ -1290,7 +1287,10 @@ sub GetNormalizedOCLCNumber {
     my ($record,$marcflavour) = @_;
     my (@fields,$oclc);
 
-    if ($marcflavour eq 'MARC21') {
+    if ($marcflavour eq 'UNIMARC') {
+        # TODO: add UNIMARC fields
+    }
+    else { # assume marc21 if not unimarc
         @fields = $record->field('035');
         foreach my $field (@fields) {
             $oclc = $field->subfield('a');
@@ -1302,8 +1302,6 @@ sub GetNormalizedOCLCNumber {
             }
         }
     }
-    else { # TODO: add UNIMARC fields
-    }
 }
 
 sub _normalize_match_point {
@@ -1315,6 +1313,7 @@ sub _normalize_match_point {
 }
 
 sub _isbn_cleanup {
+    require Business::ISBN;
     my $isbn = Business::ISBN->new( $_[0] );
     if ( $isbn ) {
         $isbn = $isbn->as_isbn10 if $isbn->type eq 'ISBN13';