use Memoize because Memcache::Memoize is slow for me
[koha.git] / C4 / Koha.pm
index 95244bd..06b2ec5 100644 (file)
@@ -1203,21 +1203,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 +1238,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 +1249,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 +1260,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 +1290,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 +1305,6 @@ sub GetNormalizedOCLCNumber {
             }
         }
     }
-    else { # TODO: add UNIMARC fields
-    }
 }
 
 sub _normalize_match_point {