koha-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Koha-cvs] CVS: koha/acqui.simple addbiblio.pl,1.14,1.15 isbnsearch.pl,1


From: Paul POULAIN
Subject: [Koha-cvs] CVS: koha/acqui.simple addbiblio.pl,1.14,1.15 isbnsearch.pl,1.7,1.8 marcimport.pl,1.25,1.26
Date: Thu, 23 Jan 2003 04:26:44 -0800

Update of /cvsroot/koha/koha/acqui.simple
In directory sc8-pr-cvs1:/tmp/cvs-serv7904/acqui.simple

Modified Files:
        addbiblio.pl isbnsearch.pl marcimport.pl 
Log Message:
upgrading import in breeding farm (you can now search on ISBN or on title) AND 
character encoding.

Index: addbiblio.pl
===================================================================
RCS file: /cvsroot/koha/koha/acqui.simple/addbiblio.pl,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -r1.14 -r1.15
*** addbiblio.pl        21 Jan 2003 08:13:50 -0000      1.14
--- addbiblio.pl        23 Jan 2003 12:26:41 -0000      1.15
***************
*** 47,55 ****
  
  sub MARCfindbreeding {
!       my ($dbh,$isbn) = @_;
!       my $sth = $dbh->prepare("select file,marc from marc_breeding where 
isbn=?");
!       $sth->execute($isbn);
        my ($file,$marc) = $sth->fetchrow;
- #     $marc = char_decode($marc);
        if ($marc) {
                my $record = MARC::File::USMARC::decode($marc);
--- 47,54 ----
  
  sub MARCfindbreeding {
!       my ($dbh,$id) = @_;
!       my $sth = $dbh->prepare("select file,marc from marc_breeding where 
id=?");
!       $sth->execute($id);
        my ($file,$marc) = $sth->fetchrow;
        if ($marc) {
                my $record = MARC::File::USMARC::decode($marc);
***************
*** 63,161 ****
  }
  
- # some special chars in ISO 2709 (ISO 6630 and ISO 646 set)
- 
- my $IS3 = '\x1d' ;            # IS3 : record end
- my $IS2 = '\x1e' ;            # IS2 : field end
- my $IS1 = '\x1f' ;            # IS1 : begin subfield
- my $NSB = '\x88' ;            # NSB : begin Non Sorting Block
- my $NSE = '\x89' ;            # NSE : Non Sorting Block end
- 
- sub char_decode {
-       # converts ISO 5426 coded string to ISO 8859-1
-       # sloppy code : should be improved in next issue
-       my ($string) = @_ ;
-       $_ = $string ;
-       if(/[\xc1-\xff]/) {
-               s/\xe1/Æ/gm ;
-               s/\xe2/Ð/gm ;
-               s/\xe9/Ø/gm ;
-               s/\xec/þ/gm ;
-               s/\xf1/æ/gm ;
-               s/\xf3/ð/gm ;
-               s/\xf9/ø/gm ;
-               s/\xfb/ß/gm ;
-               s/\xc1\x61/à/gm ;
-               s/\xc1\x65/è/gm ;
-               s/\xc1\x69/ì/gm ;
-               s/\xc1\x6f/ò/gm ;
-               s/\xc1\x75/ù/gm ;
-               s/\xc1\x41/À/gm ;
-               s/\xc1\x45/È/gm ;
-               s/\xc1\x49/Ì/gm ;
-               s/\xc1\x4f/Ò/gm ;
-               s/\xc1\x55/Ù/gm ;
-               s/\xc2\x41/Á/gm ;
-               s/\xc2\x45/É/gm ;
-               s/\xc2\x49/Í/gm ;
-               s/\xc2\x4f/Ó/gm ;
-               s/\xc2\x55/Ú/gm ;
-               s/\xc2\x59/Ý/gm ;
-               s/\xc2\x61/á/gm ;
-               s/\xc2\x65/é/gm ;
-               s/\xc2\x69/í/gm ;
-               s/\xc2\x6f/ó/gm ;
-               s/\xc2\x75/ú/gm ;
-               s/\xc2\x79/ý/gm ;
-               s/\xc3\x41/Â/gm ;
-               s/\xc3\x45/Ê/gm ;
-               s/\xc3\x49/Î/gm ;
-               s/\xc3\x4f/Ô/gm ;
-               s/\xc3\x55/Û/gm ;
-               s/\xc3\x61/â/gm ;
-               s/\xc3\x65/ê/gm ;
-               s/\xc3\x69/î/gm ;
-               s/\xc3\x6f/ô/gm ;
-               s/\xc3\x75/û/gm ;
-               s/\xc4\x41/Ã/gm ;
-               s/\xc4\x4e/Ñ/gm ;
-               s/\xc4\x4f/Õ/gm ;
-               s/\xc4\x61/ã/gm ;
-               s/\xc4\x6e/ñ/gm ;
-               s/\xc4\x6f/õ/gm ;
-               s/\xc8\x45/Ë/gm ;
-               s/\xc8\x49/Ï/gm ;
-               s/\xc8\x65/ë/gm ;
-               s/\xc8\x69/ï/gm ;
-               s/\xc8\x76/ÿ/gm ;
-               s/\xc9\x41/Ä/gm ;
-               s/\xc9\x4f/Ö/gm ;
-               s/\xc9\x55/Ü/gm ;
-               s/\xc9\x61/ä/gm ;
-               s/\xc9\x6f/ö/gm ;
-               s/\xc9\x75/ü/gm ;
-               s/\xca\x41/Å/gm ;
-               s/\xca\x61/å/gm ;
-               s/\xd0\x43/Ç/gm ;
-               s/\xd0\x63/ç/gm ;
-       }
-       # this handles non-sorting blocks (if implementation requires this)
-       $string = nsb_clean($_) ;
-       return($string) ;
- }
- 
- sub nsb_clean {
-       # handles non sorting blocks
-       my ($string) = @_ ;
-       $_ = $string ;
-       s/$NSB/(/gm ;
-       s/[ ]{0,1}$NSE/) /gm ;
-       $string = $_ ;
-       return($string) ;
- }
  
  my $input = new CGI;
  my $error = $input->param('error');
  my $oldbiblionumber=$input->param('oldbiblionumber'); # if bib exists, it's a 
modif, not a new biblio.
! my $isbn = $input->param('isbn');
  my $op = $input->param('op');
  my $dbh = C4::Context->dbh;
--- 62,70 ----
  }
  
  
  my $input = new CGI;
  my $error = $input->param('error');
  my $oldbiblionumber=$input->param('oldbiblionumber'); # if bib exists, it's a 
modif, not a new biblio.
! my $breedingid = $input->param('breedingid');
  my $op = $input->param('op');
  my $dbh = C4::Context->dbh;
***************
*** 179,183 ****
  $record = MARCgetbiblio($dbh,$bibid) if ($bibid);
  #warn "1= ".$record->as_formatted;
! $record = MARCfindbreeding($dbh,$isbn) if ($isbn);
  my $is_a_modif=0;
  my ($oldbiblionumtagfield,$oldbiblionumtagsubfield);
--- 88,92 ----
  $record = MARCgetbiblio($dbh,$bibid) if ($bibid);
  #warn "1= ".$record->as_formatted;
! $record = MARCfindbreeding($dbh,$breedingid) if ($breedingid);
  my $is_a_modif=0;
  my ($oldbiblionumtagfield,$oldbiblionumtagsubfield);
***************
*** 249,253 ****
                                if ($record ne -1) {
                                        my ($x,$value) = 
find_value($tag,$subfield,$record);
!                                       $value=char_decode($value);
                                        $indicator = $x if $x;
                                        if 
($tagslib->{$tag}->{$subfield}->{authorised_value}) {
--- 158,162 ----
                                if ($record ne -1) {
                                        my ($x,$value) = 
find_value($tag,$subfield,$record);
!                                       $value=char_decode($value) unless 
($is_a_modif);
                                        $indicator = $x if $x;
                                        if 
($tagslib->{$tag}->{$subfield}->{authorised_value}) {
***************
*** 304,308 ****
                                        my ($x,$value);
                                        ($x,$value) = 
find_value($tag,$subfield,$record) if ($record ne -1);
!                                       $value=char_decode($value);
                                        if 
($tagslib->{$tag}->{$subfield}->{authorised_value}) {
                                                my @authorised_values;
--- 213,217 ----
                                        my ($x,$value);
                                        ($x,$value) = 
find_value($tag,$subfield,$record) if ($record ne -1);
!                                       $value=char_decode($value) unless 
($is_a_modif);
                                        if 
($tagslib->{$tag}->{$subfield}->{authorised_value}) {
                                                my @authorised_values;

Index: isbnsearch.pl
===================================================================
RCS file: /cvsroot/koha/koha/acqui.simple/isbnsearch.pl,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** isbnsearch.pl       20 Jan 2003 07:39:27 -0000      1.7
--- isbnsearch.pl       23 Jan 2003 12:26:41 -0000      1.8
***************
*** 31,34 ****
--- 31,35 ----
  my $input      = new CGI;
  my $isbn       = $input->param('isbn');
+ my $title             = $input->param('title');
  my $offset     = $input->param('offset');
  my $num        = $input->param('num');
***************
*** 45,51 ****
                             debug => 1,
                             });
! if (! $isbn) {
        print $input->redirect('addbooks.pl');
  } else {
        if (! $offset) {
                $offset     = 0;
--- 46,53 ----
                             debug => 1,
                             });
! if (! $isbn && !$title) {
        print $input->redirect('addbooks.pl');
  } else {
+       # fill with books in ACTIVE DB (biblio)
        if (! $offset) {
                $offset     = 0;
***************
*** 85,88 ****
--- 87,102 ----
                push (@loop_links,\%row_data);
        } # for
+       # fill with books in breeding farm
+       ($count, @results) = breedingsearch($title,$isbn);
+       my @breeding_loop = ();
+       for (my $i=0; $i <= $#results; $i++) {
+               my %row_data;
+               $row_data{id} = $results[$i]->{'id'};
+               $row_data{isbn} = $results[$i]->{'isbn'};
+               $row_data{file} = $results[$i]->{'file'};
+               $row_data{title} = $results[$i]->{'title'};
+               $row_data{author} = $results[$i]->{'author'};
+               push (@breeding_loop, \%row_data);
+       }
        $template->param(isbn => $isbn,
                                                        showoffset => 
$showoffset,
***************
*** 90,93 ****
--- 104,108 ----
                                                        offset => $offset,
                                                        loop => address@hidden,
+                                                       breeding_loop => 
address@hidden,
                                                        loop_links => 
address@hidden);
  

Index: marcimport.pl
===================================================================
RCS file: /cvsroot/koha/koha/acqui.simple/marcimport.pl,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -r1.25 -r1.26
*** marcimport.pl       21 Jan 2003 08:13:50 -0000      1.25
--- marcimport.pl       23 Jan 2003 12:26:41 -0000      1.26
***************
*** 87,92 ****
        my $searchisbn = $dbh->prepare("select biblioitemnumber from 
biblioitems where isbn=?");
        my $searchissn = $dbh->prepare("select biblioitemnumber from 
biblioitems where issn=?");
!       my $searchbreeding = $dbh->prepare("select isbn from marc_breeding 
where isbn=?");
!       my $insertsql = $dbh->prepare("replace into marc_breeding 
(file,isbn,title,marc) values(?,?,?,?)");
        # fields used for import results
        my $imported=0;
--- 87,93 ----
        my $searchisbn = $dbh->prepare("select biblioitemnumber from 
biblioitems where isbn=?");
        my $searchissn = $dbh->prepare("select biblioitemnumber from 
biblioitems where issn=?");
!       my $searchbreeding = $dbh->prepare("select id from marc_breeding where 
isbn=?");
!       my $insertsql = $dbh->prepare("insert into marc_breeding 
(file,isbn,title,author,marc) values(?,?,?,?,?)");
!       my $replacesql = $dbh->prepare("update marc_breeding set 
file=?,isbn=?,title=?,author=?,marc=? where id=?");
        # fields used for import results
        my $imported=0;
***************
*** 100,139 ****
                } else {
                        my $oldbiblio = MARCmarc2koha($dbh,$marcrecord);
                        # if isbn found and biblio does not exist, add it. If 
isbn found and biblio exists, overwrite or ignore depending on user choice
!                       if ($oldbiblio->{isbn} || $oldbiblio->{issn}) {
!                               # drop every "special" char : spaces, - ...
!                               $oldbiblio->{isbn} =~ s/ |-|\.//g,
!                               # search if biblio exists
!                               my $biblioitemnumber;
                                if ($oldbiblio->{isbn}) {
!                                       
$searchisbn->execute($oldbiblio->{isbn});
!                                       ($biblioitemnumber) = 
$searchisbn->fetchrow;
                                } else {
!                                       
$searchissn->execute($oldbiblio->{issn});
!                                       ($biblioitemnumber) = 
$searchissn->fetchrow;
                                }
!                               if ($biblioitemnumber) {
!                                       $alreadyindb++;
                                } else {
!                               # search in breeding farm
!                               my $breedingresult;
!                                       if ($oldbiblio->{isbn}) {
!                                               
$searchbreeding->execute($oldbiblio->{isbn});
!                                               ($breedingresult) = 
$searchbreeding->fetchrow;
!                                       } else {
!                                               
$searchbreeding->execute($oldbiblio->{issn});
!                                               ($breedingresult) = 
$searchbreeding->fetchrow;
!                                       }
!                                       if (!$breedingresult || 
$overwrite_biblio) {
!                                               my $recoded;
!                                               $recoded = 
$marcrecord->as_usmarc();
!                                               $insertsql 
->execute($filename,$oldbiblio->{isbn}.$oldbiblio->{issn},$oldbiblio->{title},$recoded);
!                                               $imported++;
!                                       } else {
!                                               $alreadyinfarm++;
!                                       }
                                }
-                       } else {
-                               $notmarcrecord++;
                        }
                }
--- 101,142 ----
                } else {
                        my $oldbiblio = MARCmarc2koha($dbh,$marcrecord);
+                       $oldbiblio->{title} = char_decode($oldbiblio->{title});
+                       $oldbiblio->{author} = 
char_decode($oldbiblio->{author});
                        # if isbn found and biblio does not exist, add it. If 
isbn found and biblio exists, overwrite or ignore depending on user choice
!                       # drop every "special" char : spaces, - ...
!                       $oldbiblio->{isbn} =~ s/ |-|\.//g,
!                       # search if biblio exists
!                       my $biblioitemnumber;
!                       if ($oldbiblio->{isbn}) {
!                               $searchisbn->execute($oldbiblio->{isbn});
!                               ($biblioitemnumber) = $searchisbn->fetchrow;
!                       } else {
!                               $searchissn->execute($oldbiblio->{issn});
!                               ($biblioitemnumber) = $searchissn->fetchrow;
!                       }
!                       if ($biblioitemnumber) {
!                               $alreadyindb++;
!                       } else {
!                               # search in breeding farm
!                               my $breedingid;
                                if ($oldbiblio->{isbn}) {
!                                       
$searchbreeding->execute($oldbiblio->{isbn});
!                                       ($breedingid) = 
$searchbreeding->fetchrow;
                                } else {
!                                       
$searchbreeding->execute($oldbiblio->{issn});
!                                       ($breedingid) = 
$searchbreeding->fetchrow;
                                }
!                               if (!$breedingid || $overwrite_biblio) {
!                                       my $recoded;
!                                       $recoded = $marcrecord->as_usmarc();
!                                               if ($breedingid) {
!                                                       $replacesql 
->execute($filename,$oldbiblio->{isbn}.$oldbiblio->{issn},$oldbiblio->{title},$oldbiblio->{author},$recoded,$breedingid);
!                                               } else {
!                                                       $insertsql 
->execute($filename,$oldbiblio->{isbn}.$oldbiblio->{issn},$oldbiblio->{title},$oldbiblio->{author},$recoded);
!                                               }
!                                       $imported++;
                                } else {
!                                       $alreadyinfarm++;
                                }
                        }
                }
***************
*** 804,807 ****
--- 807,813 ----
  # log cleared, as marcimport is (almost) rewritten from scratch.
  # $Log$
+ # Revision 1.26  2003/01/23 12:26:41  tipaul
+ # upgrading import in breeding farm (you can now search on ISBN or on title) 
AND character encoding.
+ #
  # Revision 1.25  2003/01/21 08:13:50  tipaul
  # character encoding ISO646 => 8859-1, first draft




reply via email to

[Prev in Thread] Current Thread [Next in Thread]