added autocomplete="off"
[koha.git] / C4 / Koha.pm
index d10c52e..789f674 100644 (file)
@@ -2,6 +2,7 @@ package C4::Koha;
 
 # Copyright 2000-2002 Katipo Communications
 # Parts Copyright 2010 Nelsonville Public Library
+# Parts copyright 2010 BibLibre
 #
 # This file is part of Koha.
 #
@@ -35,7 +36,6 @@ BEGIN {
        @ISA    = qw(Exporter);
        @EXPORT = qw(
                &slashifyDate
-               &DisplayISBN
                &subfield_is_koha_internal_p
                &GetPrinters &GetPrinter
                &GetItemTypes &getitemtypeinfo
@@ -58,6 +58,8 @@ BEGIN {
                &GetKohaAuthorisedValues
                &GetKohaAuthorisedValuesFromField
     &GetKohaAuthorisedValueLib
+    &GetAuthorisedValueByCode
+    &GetKohaImageurlFromAuthorisedValues
                &GetAuthValCode
                &GetNormalizedUPC
                &GetNormalizedISBN
@@ -106,106 +108,6 @@ sub slashifyDate {
     return ("$dateOut[2]/$dateOut[1]/$dateOut[0]");
 }
 
-
-=head2 DisplayISBN
-
-  my $string = DisplayISBN( $isbn );
-
-=cut
-
-sub DisplayISBN {
-    my ($isbn) = @_;
-    if (length ($isbn)<13){
-    my $seg1;
-    if ( substr( $isbn, 0, 1 ) <= 7 ) {
-        $seg1 = substr( $isbn, 0, 1 );
-    }
-    elsif ( substr( $isbn, 0, 2 ) <= 94 ) {
-        $seg1 = substr( $isbn, 0, 2 );
-    }
-    elsif ( substr( $isbn, 0, 3 ) <= 995 ) {
-        $seg1 = substr( $isbn, 0, 3 );
-    }
-    elsif ( substr( $isbn, 0, 4 ) <= 9989 ) {
-        $seg1 = substr( $isbn, 0, 4 );
-    }
-    else {
-        $seg1 = substr( $isbn, 0, 5 );
-    }
-    my $x = substr( $isbn, length($seg1) );
-    my $seg2;
-    if ( substr( $x, 0, 2 ) <= 19 ) {
-
-        # if(sTmp2 < 10) sTmp2 = "0" sTmp2;
-        $seg2 = substr( $x, 0, 2 );
-    }
-    elsif ( substr( $x, 0, 3 ) <= 699 ) {
-        $seg2 = substr( $x, 0, 3 );
-    }
-    elsif ( substr( $x, 0, 4 ) <= 8399 ) {
-        $seg2 = substr( $x, 0, 4 );
-    }
-    elsif ( substr( $x, 0, 5 ) <= 89999 ) {
-        $seg2 = substr( $x, 0, 5 );
-    }
-    elsif ( substr( $x, 0, 6 ) <= 9499999 ) {
-        $seg2 = substr( $x, 0, 6 );
-    }
-    else {
-        $seg2 = substr( $x, 0, 7 );
-    }
-    my $seg3 = substr( $x, length($seg2) );
-    $seg3 = substr( $seg3, 0, length($seg3) - 1 );
-    my $seg4 = substr( $x, -1, 1 );
-    return "$seg1-$seg2-$seg3-$seg4";
-    } else {
-      my $seg1;
-      $seg1 = substr( $isbn, 0, 3 );
-      my $seg2;
-      if ( substr( $isbn, 3, 1 ) <= 7 ) {
-          $seg2 = substr( $isbn, 3, 1 );
-      }
-      elsif ( substr( $isbn, 3, 2 ) <= 94 ) {
-          $seg2 = substr( $isbn, 3, 2 );
-      }
-      elsif ( substr( $isbn, 3, 3 ) <= 995 ) {
-          $seg2 = substr( $isbn, 3, 3 );
-      }
-      elsif ( substr( $isbn, 3, 4 ) <= 9989 ) {
-          $seg2 = substr( $isbn, 3, 4 );
-      }
-      else {
-          $seg2 = substr( $isbn, 3, 5 );
-      }
-      my $x = substr( $isbn, length($seg2) +3);
-      my $seg3;
-      if ( substr( $x, 0, 2 ) <= 19 ) {
-  
-          # if(sTmp2 < 10) sTmp2 = "0" sTmp2;
-          $seg3 = substr( $x, 0, 2 );
-      }
-      elsif ( substr( $x, 0, 3 ) <= 699 ) {
-          $seg3 = substr( $x, 0, 3 );
-      }
-      elsif ( substr( $x, 0, 4 ) <= 8399 ) {
-          $seg3 = substr( $x, 0, 4 );
-      }
-      elsif ( substr( $x, 0, 5 ) <= 89999 ) {
-          $seg3 = substr( $x, 0, 5 );
-      }
-      elsif ( substr( $x, 0, 6 ) <= 9499999 ) {
-          $seg3 = substr( $x, 0, 6 );
-      }
-      else {
-          $seg3 = substr( $x, 0, 7 );
-      }
-      my $seg4 = substr( $x, length($seg3) );
-      $seg4 = substr( $seg4, 0, length($seg4) - 1 );
-      my $seg5 = substr( $x, -1, 1 );
-      return "$seg1-$seg2-$seg3-$seg4-$seg5";       
-    }    
-}
-
 # FIXME.. this should be moved to a MARC-specific module
 sub subfield_is_koha_internal_p ($) {
     my ($subfield) = @_;
@@ -671,8 +573,8 @@ sub getImageSets {
 
     my @imagesets = (); # list of hasrefs of image set data to pass to template
     my @subdirectories = _getSubdirectoryNames( $paths->{'staff'}{'filesystem'} );
-
     foreach my $imagesubdir ( @subdirectories ) {
+    warn $imagesubdir if $DEBUG;
         my @imagelist     = (); # hashrefs of image info
         my @imagenames = _getImagesFromDirectory( File::Spec->catfile( $paths->{'staff'}{'filesystem'}, $imagesubdir ) );
         my $imagesetactive = 0;
@@ -1041,6 +943,25 @@ sub displayServers {
     return \@primaryserverloop;
 }
 
+
+=head2 GetKohaImageurlFromAuthorisedValues
+
+$authhorised_value = GetKohaImageurlFromAuthorisedValues( $category, $authvalcode );
+
+Return the first url of the authorised value image represented by $lib.
+
+=cut
+
+sub GetKohaImageurlFromAuthorisedValues {
+    my ( $category, $lib ) = @_;
+    my $dbh = C4::Context->dbh;
+    my $sth = $dbh->prepare("SELECT imageurl FROM authorised_values WHERE category=? AND lib =?");
+    $sth->execute( $category, $lib );
+    while ( my $data = $sth->fetchrow_hashref ) {
+        return $data->{'imageurl'};
+    }
+}
+
 =head2 GetAuthValCode
 
   $authvalcode = GetAuthValCode($kohafield,$frameworkcode);
@@ -1129,12 +1050,32 @@ sub GetAuthorisedValueCategories {
     my $sth = $dbh->prepare("SELECT DISTINCT category FROM authorised_values ORDER BY category");
     $sth->execute;
     my @results;
-    while (my $category = $sth->fetchrow_array) {
+    while (defined (my $category  = $sth->fetchrow_array) ) {
         push @results, $category;
     }
     return \@results;
 }
 
+=head2 GetAuthorisedValueByCode
+
+$authhorised_value = GetAuthorisedValueByCode( $category, $authvalcode );
+
+Return the lib attribute from authorised_values from the row identified
+by the passed category and code
+
+=cut
+
+sub GetAuthorisedValueByCode {
+    my ( $category, $authvalcode ) = @_;
+
+    my $dbh = C4::Context->dbh;
+    my $sth = $dbh->prepare("SELECT lib FROM authorised_values WHERE category=? AND authorised_value =?");
+    $sth->execute( $category, $authvalcode );
+    while ( my $data = $sth->fetchrow_hashref ) {
+        return $data->{'lib'};
+    }
+}
+
 =head2 GetKohaAuthorisedValues
 
 Takes $kohafield, $fwcode as parameters.
@@ -1261,21 +1202,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;
             }
         }
@@ -1295,10 +1237,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 {
@@ -1306,10 +1248,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 {
@@ -1317,28 +1259,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;
             }
         }
@@ -1348,7 +1289,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');
@@ -1360,8 +1304,6 @@ sub GetNormalizedOCLCNumber {
             }
         }
     }
-    else { # TODO: add UNIMARC fields
-    }
 }
 
 sub _normalize_match_point {