koha-cvs
[Top][All Lists]
Advanced

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

[Koha-cvs] CVS: koha/acqui.simple marcimport.pl,1.9,1.10


From: Alan Millar
Subject: [Koha-cvs] CVS: koha/acqui.simple marcimport.pl,1.9,1.10
Date: Thu, 23 May 2002 13:49:34 -0700

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

Modified Files:
        marcimport.pl 
Log Message:

Moved addition of Biblioitem to separate subroutine


Index: marcimport.pl
===================================================================
RCS file: /cvsroot/koha/koha/acqui.simple/marcimport.pl,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -r1.9 -r1.10
*** marcimport.pl       22 May 2002 06:45:30 -0000      1.9
--- marcimport.pl       23 May 2002 20:49:31 -0000      1.10
***************
*** 262,337 ****
      } else {
        use strict;
  
!       # It doesn't exist; add it.
  
!       $biblionumber=GetOrAddBiblio($dbh,
!               { title         =>$input->param('title'),
!                author         =>$input->param('author'),
!                copyright      =>$input->param('copyrightdate'),
!                seriestitle    =>$input->param('seriestitle'),
!                notes          =>$input->param('notes'),
!                abstract       =>$input->param('abstract'),
!                subtitle       =>$input->param('subtitle'),
!               }
        );
  
-       $sth=$dbh->prepare("select max(biblioitemnumber) from biblioitems");
-       $sth->execute;
-       ($biblioitemnumber) = $sth->fetchrow;
-       $biblioitemnumber++;
-       my $q_isbn=$dbh->quote($isbn);
-       my $q_issn=$dbh->quote($issn);
-       my $q_lccn=$dbh->quote($lccn);
-       my $q_volume=$dbh->quote($input->param('volume'));
-       my $q_number=$dbh->quote($input->param('number'));
-       my $q_itemtype=$dbh->quote($input->param('itemtype'));
-       my $q_dewey=$dbh->quote($input->param('dewey'));
-       my $q_subclass=$dbh->quote($input->param('subclass'));
-       my $q_publicationyear=$dbh->quote($input->param('publicationyear'));
-       my $q_publishercode=$dbh->quote($input->param('publishercode'));
-       my $q_volumedate=$dbh->quote($input->param('volumedate'));
-       my $q_volumeddesc=$dbh->quote($input->param('volumeddesc'));
-       my $q_illus=$dbh->quote($input->param('illustrator'));
-       my $q_pages=$dbh->quote($input->param('pages'));
-       my $q_notes=$dbh->quote($input->param('note'));
-       my $q_size=$dbh->quote($input->param('size'));
-       my $q_place=$dbh->quote($input->param('place'));
-       my $q_marc=$dbh->quote($input->param('marc'));
- 
-       $sth=$dbh->prepare("insert into biblioitems (biblioitemnumber, 
biblionumber, volume, number, itemtype, isbn, issn, dewey, subclass, 
publicationyear, publishercode, volumedate, volumeddesc, illus, pages, notes, 
size, place, lccn, marc) values ($biblioitemnumber, $biblionumber, $q_volume, 
$q_number, $q_itemtype, $q_isbn, $q_issn, $q_dewey, $q_subclass, 
$q_publicationyear, $q_publishercode, $q_volumedate, $q_volumeddesc, $q_illus, 
$q_pages, $q_notes, $q_size, $q_place, $q_lccn, $q_marc)");
-       $sth->execute;
-       my $subjectheadings=$input->param('subject');
-       my $additionalauthors=$input->param('additionalauthors');
-       my @subjectheadings=split(/\n/,$subjectheadings);
-       my $subjectheading;
-       foreach $subjectheading (@subjectheadings) {
-           # remove any line ending characters (Ctrl-J or M)
-           $subjectheading=~s/\013//g;
-           $subjectheading=~s/\010//g;
-           # convert to upper case
-           $subjectheading=uc($subjectheading);
-           chomp ($subjectheading);
-           while (ord(substr($subjectheading, length($subjectheading)-1, 
1))<14) {
-               chop $subjectheading;
-           }
-           # quote value
-           my $q_subjectheading=$dbh->quote($subjectheading);
-           $sth=$dbh->prepare("insert into bibliosubject (biblionumber,subject)
-               values ($biblionumber, $q_subjectheading)");
-           $sth->execute;
-       }
-       my @additionalauthors=split(/\n/,$additionalauthors);
-       my $additionalauthor;
-       foreach $additionalauthor (@additionalauthors) {
-           # remove any line ending characters (Ctrl-L or Ctrl-M)
-           $additionalauthor=~s/\013//g;
-           $additionalauthor=~s/\010//g;
-           # convert to upper case
-           $additionalauthor=uc($additionalauthor);
-           # quote value
-           my $q_additionalauthor=$dbh->quote($additionalauthor);
-           $sth=$dbh->prepare("insert into additionalauthors 
(biblionumber,author) values ($biblionumber, $q_additionalauthor)");
-           $sth->execute;
-       }
  
        my $title=$input->param('title');
--- 262,316 ----
      } else {
        use strict;
+       my $error;
+       my %biblio;
+       my %biblioitem;
  
!       # convert to upper case and split on lines
!       my $subjectheadings=$input->param('subject');
!       my @subjectheadings=split(/[\r\n]+/,$subjectheadings);
  
!       my $additionalauthors=$input->param('additionalauthors');
!       my @additionalauthors=split(/[\r\n]+/,uc($additionalauthors));
! 
!       # Use individual assignments to hash buckets, in case
!       #  any of the input parameters are empty or don't exist
!       $biblio{title}          =$input->param('title');
!       $biblio{author}         =$input->param('author');
!       $biblio{copyright}      =$input->param('copyrightdate');
!       $biblio{seriestitle}    =$input->param('seriestitle');
!       $biblio{notes}          =$input->param('notes');
!       $biblio{abstract}       =$input->param('abstract');
!       $biblio{subtitle}       =$input->param('subtitle');
! 
!       $biblioitem{volume}             =$input->param('volume');
!       $biblioitem{number}             =$input->param('number');
!       $biblioitem{itemtype}           =$input->param('itemtype');
!       $biblioitem{isbn}               =$input->param('isbn');
!       $biblioitem{issn}               =$input->param('issn');
!       $biblioitem{dewey}              =$input->param('dewey');
!       $biblioitem{subclass}           =$input->param('subclass');
!       $biblioitem{publicationyear}    =$input->param('publicationyear');
!       $biblioitem{publishercode}      =$input->param('publishercode');
!       $biblioitem{volumedate}         =$input->param('volumedate');
!       $biblioitem{volumeddesc}        =$input->param('volumeddesc');
!       $biblioitem{illus}              =$input->param('illustrator');
!       $biblioitem{pages}              =$input->param('pages');
!       $biblioitem{notes}              =$input->param('notes');
!       $biblioitem{size}               =$input->param('size');
!       $biblioitem{place}              =$input->param('place');
!       $biblioitem{lccn}               =$input->param('lccn');
!       $biblioitem{marc}               =$input->param('marc');
! 
!       print "<PRE>address@hidden</PRE>\n";
!       print "<PRE>address@hidden</PRE>\n";
!               
!       ($biblionumber, $biblioitemnumber, $error)=
!         NewBiblioItem($dbh,
!               \%biblio,
!               \%biblioitem,
!               address@hidden,
!               address@hidden
        );
  
  
        my $title=$input->param('title');
***************
*** 343,347 ****
        </table>
  EOF
!     }
      my $title=$input->param('title');
  
--- 322,327 ----
        </table>
  EOF
!     } # if new record
! 
      my $title=$input->param('title');
  
***************
*** 391,394 ****
--- 371,470 ----
  }
  
+ sub NewBiblioItem {
+       use strict;
+ 
+       my ( $dbh,              # DBI handle
+         $biblio,              # hash ref to biblio record
+         $biblioitem,          # hash ref to biblioitem record
+         $subjects,            # list ref of subjects
+         $addlauthors,         # list ref of additional authors
+       )address@hidden ;
+ 
+       my ( $biblionumber, $biblioitemnumber, $error);         # return values
+ 
+       my $debug=1;
+       my $sth;
+       my $subjectheading;
+       my $additionalauthor;
+ 
+       #--------
+ 
+       print "<PRE>Trying to add biblio item Title=$biblio->{title} " .
+               "ISBN=$biblioitem->{isbn} </PRE>\n" if $debug;
+ 
+       # Make sure master biblio entry exists
+       $biblionumber=GetOrAddBiblio($dbh, $biblio);
+ 
+       # Get next biblioitemnumber
+       $sth=$dbh->prepare("select max(biblioitemnumber) from biblioitems");
+       $sth->execute;
+       ($biblioitemnumber) = $sth->fetchrow;
+       $biblioitemnumber++;
+ 
+       print "<PRE>Next biblio item is $biblioitemnumber</PRE>\n" if $debug;
+ 
+       $sth=$dbh->prepare("insert into biblioitems (
+         biblioitemnumber,
+         biblionumber,
+         volume,
+         number,
+         itemtype,
+         isbn,
+         issn,
+         dewey,
+         subclass,
+         publicationyear,
+         publishercode,
+         volumedate,
+         volumeddesc,
+         illus,
+         pages,
+         notes,
+         size,
+         place,
+         lccn,
+         marc)
+       values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" );
+ 
+       $sth->execute(
+         $biblioitemnumber,
+         $biblionumber,
+         $biblioitem->{volume},
+         $biblioitem->{number},
+         $biblioitem->{itemtype},
+         $biblioitem->{isbn},
+         $biblioitem->{issn},
+         $biblioitem->{dewey},
+         $biblioitem->{subclass},
+         $biblioitem->{publicationyear},
+         $biblioitem->{publishercode},
+         $biblioitem->{volumedate},
+         $biblioitem->{volumeddesc},
+         $biblioitem->{illus},
+         $biblioitem->{pages},
+         $biblioitem->{notes},
+         $biblioitem->{size},
+         $biblioitem->{place},
+         $biblioitem->{lccn},
+         $biblioitem->{marc} );
+ 
+       $sth=$dbh->prepare("insert into bibliosubject 
+               (biblionumber,subject)
+               values (?, ? )" );
+       foreach $subjectheading (@{$subjects} ) {
+           $sth->execute($biblionumber, $subjectheading);
+       }
+ 
+       $sth=$dbh->prepare("insert into additionalauthors 
+               (biblionumber,author)
+               values (?, ? )");
+       foreach $additionalauthor (@{$addlauthors} ) {
+           $sth->execute($biblionumber, $additionalauthor);
+       }
+ 
+       return ( $biblionumber, $biblioitemnumber, $error);
+ 
+ } # sub NewBiblioItem
+ 
  #---------------------------------------
  # Find a biblio entry, or create a new one if it doesn't exist.
***************
*** 404,410 ****
--- 480,488 ----
        my $biblionumber;
  
+       my $debug=1;
        my $sth;
        
        #-----
+       print "<PRE>Looking for biblio </PRE>\n" if $debug;
        $sth=$dbh->prepare("select biblionumber 
                from biblio 
***************
*** 416,422 ****
--- 494,503 ----
        if ($sth->rows) {
            ($biblionumber) = $sth->fetchrow;
+           print "<PRE>Biblio exists with number $biblionumber</PRE>\n" if 
$debug;
        } else {
            # Doesn't exist.  Add new one.
+           print "<PRE>Adding biblio</PRE>\n" if $debug;
            $biblionumber=&newbiblio($biblio);
+           print "<PRE>Added with biblio number $biblionumber</PRE>\n" if 
$debug;
            &newsubtitle($biblionumber,$biblio->{subtitle} );
        }
***************
*** 563,567 ****
  RECORD:
        foreach $record (@records) {
!           my ($lccn, $isbn, $issn, $dewey, $author, $title, $place, 
$publisher, $publicationyear, $volume, $number, @subjects, $note, 
$additionalauthors, $illustrator, $copyrightdate, $seriestitle);
            my $marctext=$marctext{$record};
            my $marc=$marc{$record};
--- 644,648 ----
  RECORD:
        foreach $record (@records) {
!           my ($lccn, $isbn, $issn, $dewey, $author, $title, $place, 
$publisher, $publicationyear, $volume, $number, @subjects, $notes, 
$additionalauthors, $illustrator, $copyrightdate, $seriestitle);
            my $marctext=$marctext{$record};
            my $marc=$marc{$record};
***************
*** 661,665 ****
                }
                if ($field->{'tag'} =~/^5/) {
!                   $note.="$field->{'subfields'}->{'a'}\n";
                }
                if ($field->{'tag'} =~/65\d/) {
--- 742,746 ----
                }
                if ($field->{'tag'} =~/^5/) {
!                   $notes.="$field->{'subfields'}->{'a'}\n";
                }
                if ($field->{'tag'} =~/65\d/) {
***************
*** 716,720 ****
            }
            $subjectinput=$input->textarea(-name=>'subject', 
-default=>$subject, -rows=>4, -cols=>40);
!           $noteinput=$input->textarea(-name=>'note', -default=>$note, 
-rows=>4, -cols=>40, -wrap=>'physical');
            $copyrightinput=$input->textfield(-name=>'copyrightdate', 
-default=>$copyrightdate);
            $seriestitleinput=$input->textfield(-name=>'seriestitle', 
-default=>$seriestitle);
--- 797,801 ----
            }
            $subjectinput=$input->textarea(-name=>'subject', 
-default=>$subject, -rows=>4, -cols=>40);
!           $noteinput=$input->textarea(-name=>'notes', -default=>$notes, 
-rows=>4, -cols=>40, -wrap=>'physical');
            $copyrightinput=$input->textfield(-name=>'copyrightdate', 
-default=>$copyrightdate);
            $seriestitleinput=$input->textfield(-name=>'seriestitle', 
-default=>$seriestitle);
***************
*** 896,900 ****
                        $counter++;
                        #(next) unless ($counter>=$startrecord && 
$counter<=$startrecord+10);
!                       my ($lccn, $isbn, $issn, $dewey, $author, $title, 
$place, $publisher, $publicationyear, $volume, $number, @subjects, $note, 
$controlnumber);
                        foreach $field (@$record) {
                            if ($field->{'tag'} eq '001') {
--- 977,981 ----
                        $counter++;
                        #(next) unless ($counter>=$startrecord && 
$counter<=$startrecord+10);
!                       my ($lccn, $isbn, $issn, $dewey, $author, $title, 
$place, $publisher, $publicationyear, $volume, $number, @subjects, $notes, 
$controlnumber);
                        foreach $field (@$record) {
                            if ($field->{'tag'} eq '001') {
***************
*** 984,988 ****
            my @records=parsemarcdata($data);
            foreach $record (@records) {
!               my ($lccn, $isbn, $issn, $dewey, $author, $title, $place, 
$publisher, $publicationyear, $volume, $number, @subjects, $note, 
$controlnumber);
                foreach $field (@$record) {
                    if ($field->{'tag'} eq '001') {
--- 1065,1069 ----
            my @records=parsemarcdata($data);
            foreach $record (@records) {
!               my ($lccn, $isbn, $issn, $dewey, $author, $title, $place, 
$publisher, $publicationyear, $volume, $number, @subjects, $notes, 
$controlnumber);
                foreach $field (@$record) {
                    if ($field->{'tag'} eq '001') {




reply via email to

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