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.6.2.18,1.6.2.19


From: Alan Millar
Subject: [Koha-cvs] CVS: koha/acqui.simple marcimport.pl,1.6.2.18,1.6.2.19
Date: Wed, 12 Jun 2002 15:11:16 -0700

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

Modified Files:
      Tag: rel-1-2
        marcimport.pl 
Log Message:
Streamline z3950 search results

Index: marcimport.pl
===================================================================
RCS file: /cvsroot/koha/koha/acqui.simple/marcimport.pl,v
retrieving revision 1.6.2.18
retrieving revision 1.6.2.19
diff -C2 -r1.6.2.18 -r1.6.2.19
*** marcimport.pl       12 Jun 2002 20:25:35 -0000      1.6.2.18
--- marcimport.pl       12 Jun 2002 22:11:14 -0000      1.6.2.19
***************
*** 196,200 ****
      my $qcontrolnumber=$input->param('controlnumber');
  
!     # See if a particular result record was specified
      if ($qisbn || $qissn || $qlccn || $qcontrolnumber) {
        print "<a href=$ENV{'SCRIPT_NAME'}>New File</a><hr>\n";
--- 196,200 ----
      my $qcontrolnumber=$input->param('controlnumber');
  
!     # See if a particular result item was specified
      if ($qisbn || $qissn || $qlccn || $qcontrolnumber) {
        print "<a href=$ENV{'SCRIPT_NAME'}>New File</a><hr>\n";
***************
*** 345,382 ****
            Full MARC Record available at bottom
            <form method=post>
!           <table border=1>
!           <tr><td>Title</td><td>$titleinput</td></tr>
!           <tr><td>Subtitle</td><td>$subtitleinput</td></tr>
!           <tr><td>Author</td><td>$authorinput</td></tr>
!           <tr><td>Additional Authors</td><td>$additionalauthorsinput</td></tr>
!           <tr><td>Illustrator</td><td>$illustratorinput</td></tr>
!           <tr><td>Copyright</td><td>$copyrightinput</td></tr>
!           <tr><td>Series Title</td><td>$seriestitleinput</td></tr>
!           <tr><td>Volume</td><td>$volumeinput</td></tr>
!           <tr><td>Number</td><td>$numberinput</td></tr>
!           <tr><td>Volume Date</td><td>$volumedateinput</td></tr>
!           <tr><td>Volume Description</td><td>$volumeddescinput</td></tr>
!           <tr><td>Subject</td><td>$subjectinput</td></tr>
!           <tr><td>Notes</td><td>$noteinput</td></tr>
!           <tr><td>Item Type</td><td><select 
name=itemtype>$itemtypeselect</select></td></tr>
!           <tr><td>ISBN</td><td>$isbninput</td></tr>
!           <tr><td>ISSN</td><td>$issninput</td></tr>
!           <tr><td>LCCN</td><td>$lccninput</td></tr>
!           <tr><td>Dewey</td><td>$deweyinput</td></tr>
!           <tr><td>Subclass</td><td>$subclassinput</td></tr>
!           <tr><td>Publication Year</td><td>$pubyearinput</td></tr>
!           <tr><td>Publisher</td><td>$publisherinput</td></tr>
!           <tr><td>Place</td><td>$placeinput</td></tr>
!           <tr><td>Pages</td><td>$pagesinput</td></tr>
!           <tr><td>Size</td><td>$sizeinput</td></tr>
!           </table>
!           <input type=submit>
!           <input type=hidden name=insertnewrecord value=1>
!           $fileinput
!           $marcinput
!           $origisbn
!           $origissn
!           $origlccn
!           $origcontrolnumber
            </form>
            $marctext
--- 345,382 ----
            Full MARC Record available at bottom
            <form method=post>
!             <table border=1>
!               <tr><td>Title</td><td>$titleinput</td></tr>
!               <tr><td>Subtitle</td><td>$subtitleinput</td></tr>
!               <tr><td>Author</td><td>$authorinput</td></tr>
!               <tr><td>Additional 
Authors</td><td>$additionalauthorsinput</td></tr>
!               <tr><td>Illustrator</td><td>$illustratorinput</td></tr>
!               <tr><td>Copyright</td><td>$copyrightinput</td></tr>
!               <tr><td>Series Title</td><td>$seriestitleinput</td></tr>
!               <tr><td>Volume</td><td>$volumeinput</td></tr>
!               <tr><td>Number</td><td>$numberinput</td></tr>
!               <tr><td>Volume Date</td><td>$volumedateinput</td></tr>
!               <tr><td>Volume Description</td><td>$volumeddescinput</td></tr>
!               <tr><td>Subject</td><td>$subjectinput</td></tr>
!               <tr><td>Notes</td><td>$noteinput</td></tr>
!               <tr><td>Item Type</td><td><select 
name=itemtype>$itemtypeselect</select></td></tr>
!               <tr><td>ISBN</td><td>$isbninput</td></tr>
!               <tr><td>ISSN</td><td>$issninput</td></tr>
!               <tr><td>LCCN</td><td>$lccninput</td></tr>
!               <tr><td>Dewey</td><td>$deweyinput</td></tr>
!               <tr><td>Subclass</td><td>$subclassinput</td></tr>
!               <tr><td>Publication Year</td><td>$pubyearinput</td></tr>
!               <tr><td>Publisher</td><td>$publisherinput</td></tr>
!               <tr><td>Place</td><td>$placeinput</td></tr>
!               <tr><td>Pages</td><td>$pagesinput</td></tr>
!               <tr><td>Size</td><td>$sizeinput</td></tr>
!             </table>
!             <input type=submit>
!             <input type=hidden name=insertnewrecord value=1>
!             $fileinput
!             $marcinput
!             $origisbn
!             $origissn
!             $origlccn
!             $origcontrolnumber
            </form>
            $marctext
***************
*** 384,393 ****
        } # foreach record
      } else {
!         # No result file specified, list results
!       ListSearchResults($dbh,$input);
      } # if
  } # sub ProcessFile
  
! sub ListSearchResults {
      use strict;
  
--- 384,393 ----
        } # foreach record
      } else {
!         # No result item specified, list results
!       ListFileRecords($dbh,$input);
      } # if
  } # sub ProcessFile
  
! sub ListFileRecords {
      use strict;
  
***************
*** 399,407 ****
  
      my (
        $field,
      );
  
-       my $data;
-       my $name;
        my $z3950=0;
        my $recordsource;
--- 399,411 ----
  
      my (
+       $sth, $sti,
        $field,
+       $data,          # records in MARC file format
+       $name,
+       $srvid,
+       %servernames,
+       $serverdb,
      );
  
        my $z3950=0;
        my $recordsource;
***************
*** 409,413 ****
        my ($numrecords,$resultsid,$data,$startdate,$enddate);
  
!       # File can be results of z3950 search or uploaded MARC data
  
        # if z3950 results
--- 413,417 ----
        my ($numrecords,$resultsid,$data,$startdate,$enddate);
  
!       # File can be z3950 search query or uploaded MARC data
  
        # if z3950 results
***************
*** 417,421 ****
        } else {
            # This is a Marc upload
!           my $sth=$dbh->prepare("select marc,name from uploadedmarc where 
id=$file");
            $sth->execute;
            ($data, $name) = $sth->fetchrow;
--- 421,425 ----
        } else {
            # This is a Marc upload
!           $sth=$dbh->prepare("select marc,name from uploadedmarc where 
id=$file");
            $sth->execute;
            ($data, $name) = $sth->fetchrow;
***************
*** 438,479 ****
            # This is a z3950 search 
  
!           my $id=$1;          # search results id number
!           my $sth=$dbh->prepare("select servers from z3950queue where 
id=$id");
!           $sth->execute;
!           my ($servers) = $sth->fetchrow;
            my $serverstring;
            my $starttimer=time();
  
!           # loop through all servers in search request
!           foreach $serverstring (split(/\s+/, $servers)) {
!               my ($name, $server, $database, $auth) = split(/\//, 
$serverstring, 4);
!               if ($name eq 'MAN') {
!                   print "$server/$database<br>\n";
!               } else {
!                   my $sti=$dbh->prepare("select name from
!                   z3950servers where id=$name");
!                   $sti->execute;
!                   my ($longname)=$sti->fetchrow;
!                   print "<a name=SERVER-$name></a>\n";
!                   if ($longname) {
!                       print "$longname \n";
!                   } else {
!                       print "$server/$database \n";
!                   }
!               }
!               my $q_server=$dbh->quote($serverstring);
!               my $startrecord=$input->param("ST-$name");
                ($startrecord) || ($startrecord='0');
-               my $sti=$dbh->prepare("
-                   select numrecords,id,results,startdate,enddate 
-                       from z3950results 
-                       where queryid=$id and server=$q_server");
-               $sti->execute;
-               ($numrecords,$resultsid,$data,$startdate,$enddate) = 
$sti->fetchrow;
                my $serverplaceholder='';
                foreach ($input->param) {
                    (next) unless (/ST-(.+)/);
                    my $serverid=$1;
!                   (next) if ($serverid eq $name);
                    my $place=$input->param("ST-$serverid");
                    $serverplaceholder.="\&ST-$serverid=$place";
--- 442,475 ----
            # This is a z3950 search 
  
!           my $id=$1;          # search query id number
            my $serverstring;
            my $starttimer=time();
  
!           $sth=$dbh->prepare("
!               select 
z3950results.numrecords,z3950results.id,z3950results.results,
!                       z3950results.startdate,z3950results.enddate,server 
!               from z3950queue left outer join z3950results 
!                    on z3950queue.id=z3950results.queryid 
!               where z3950queue.id=?
!               order by server  
!           ");
!           $sth->execute($id);
!           if ( $sth->rows ) {
!             # loop through all servers in search results
!             while ( ($numrecords,$resultsid,$data,
!                       $startdate,$enddate,$serverstring) = $sth->fetchrow ) {
!               my ($srvid, $server, $database, $auth) = split(/\//, 
$serverstring, 4);
!               #print "server=$serverstring\n";
!               if ( $server ) {
!                   print "<a name=SERVER-$srvid></a> " .
!                       &z3950servername($dbh,$srvid,"$server/$database") . 
"\n";
!               } # if $server
!               my $startrecord=$input->param("ST-$srvid");
                ($startrecord) || ($startrecord='0');
                my $serverplaceholder='';
                foreach ($input->param) {
                    (next) unless (/ST-(.+)/);
                    my $serverid=$1;
!                   (next) if ($serverid eq $srvid);
                    my $place=$input->param("ST-$serverid");
                    $serverplaceholder.="\&ST-$serverid=$place";
***************
*** 483,487 ****
                    my $next='';
                    if ($startrecord>0) {
!                       $previous="<a 
href=".$ENV{'SCRIPT_NAME'}."?file=Z-$id&menu=z3950$serverplaceholder\&ST-$name=".($startrecord-10)."#SERVER-$name>Previous</a>";
                    }
                    my $highest;
--- 479,483 ----
                    my $next='';
                    if ($startrecord>0) {
!                       $previous="<a 
href=".$ENV{'SCRIPT_NAME'}."?file=Z-$id&menu=z3950$serverplaceholder\&ST-$srvid=".($startrecord-10)."#SERVER-$srvid>Previous</a>";
                    }
                    my $highest;
***************
*** 489,505 ****
                    ($highest>$numrecords) && ($highest=$numrecords);
                    if ($numrecords>$startrecord+10) {
!                       $next="<a 
href=".$ENV{'SCRIPT_NAME'}."?file=Z-$id&menu=z3950$serverplaceholder\&ST-$name=$highest#SERVER-$name>Next</a>";
                    }
                    print "<font size=-1>[Viewing ".($startrecord+1)." to 
".$highest." of $numrecords records]  $previous | $next </font><br>\n";
                } else {
                    print "<br>\n";
                }
                print "<ul>\n";
-               my $stj=$dbh->prepare("update z3950results 
-                       set highestseen=? where id=?");
-               $stj->execute($startrecord+10,$resultsid);
  
!               if ($sti->rows == 0) {
!                   print "pending...";
                } elsif ($enddate == 0) {
                    my $now=time();
--- 485,501 ----
                    ($highest>$numrecords) && ($highest=$numrecords);
                    if ($numrecords>$startrecord+10) {
!                       $next="<a 
href=".$ENV{'SCRIPT_NAME'}."?file=Z-$id&menu=z3950$serverplaceholder\&ST-$srvid=$highest#SERVER-$srvid>Next</a>";
                    }
                    print "<font size=-1>[Viewing ".($startrecord+1)." to 
".$highest." of $numrecords records]  $previous | $next </font><br>\n";
+                   my $stj=$dbh->prepare("update z3950results 
+                       set highestseen=? where id=?");
+                   $stj->execute($startrecord+10,$resultsid);
                } else {
                    print "<br>\n";
                }
                print "<ul>\n";
  
!               if (! $server ) {
!                   print "<font color=red>Search still pending...</font>";
                } elsif ($enddate == 0) {
                    my $now=time();
***************
*** 513,530 ****
                    print "<font color=red>processing... ($elapsedtime)</font>";
                } elsif ($numrecords) {
!                   my $splitchar=chr(29);
!                   my @records=split(/$splitchar/, $data);
!                   $data='';
                    my $i;
                    for ($i=$startrecord; $i<$startrecord+10; $i++) {
!                       $data.=$records[$i].$splitchar;
!                   }
!                   @records=parsemarcfileformat($data);
!                   my $counter=0;
!                   foreach $record (@records) {
! 
!                       &PrintResultRecordLink($record,$resultsid);
!                       
!                   } # foreach record
                    print "<p>\n";
                } else {
--- 509,519 ----
                    print "<font color=red>processing... ($elapsedtime)</font>";
                } elsif ($numrecords) {
!                   my @records=parsemarcfileformat($data);
                    my $i;
                    for ($i=$startrecord; $i<$startrecord+10; $i++) {
!                       if ( $records[$i] ) {
!                         &PrintResultRecordLink($records[$i],$resultsid);
!                       } # if record
!                   } # for records
                    print "<p>\n";
                } else {
***************
*** 532,538 ****
                }
                print "</ul>\n";
!           }
            my $elapsed=time()-$starttimer;
            print "<hr>It took $elapsed seconds to process this page.\n";
        } else {
            # This is an uploaded Marc record   
--- 521,530 ----
                }
                print "</ul>\n";
!           } # foreach server
            my $elapsed=time()-$starttimer;
            print "<hr>It took $elapsed seconds to process this page.\n";
+           } else {
+               print "<b>No results found for query $id</b>/n";
+           } # if rows
        } else {
            # This is an uploaded Marc record   
***************
*** 546,550 ****
        } # if z3950 or marc upload
        print "</td></tr></table>\n";
! } # sub ListSearchResults
  
  sub PrintResultRecordLink {
--- 538,567 ----
        } # if z3950 or marc upload
        print "</td></tr></table>\n";
! } # sub ListFileRecords
! 
! #--------------
! sub z3950servername {
!     # inputs
!     my (
!       $dbh,
!       $srvid,         # server id number 
!       $default,
!     )address@hidden;
!     # return
!     my $longname;
!     #----
! 
!       my $sti=$dbh->prepare("select name 
!               from z3950servers 
!               where id=?");
!       $sti->execute($srvid);
!       if ( ! $sti->err ) {
!           ($longname)=$sti->fetchrow;
!       }
!       if (! $longname) {
!           $longname="$default";
!       }
!       return $longname;
! } # sub z3950servername
  
  sub PrintResultRecordLink {
***************
*** 637,641 ****
                    # Yes, so keep the value
                    if ( ref($field->{'subfields'}->{$subfield} ) eq 'ARRAY' ) {
!                   # if it was an array, just keep first element.
                        
$bib->{$fieldname}=$field->{'subfields'}->{$subfield}[0];
                    } else {
--- 654,658 ----
                    # Yes, so keep the value
                    if ( ref($field->{'subfields'}->{$subfield} ) eq 'ARRAY' ) {
!                       # if it was an array, just keep first element.
                        
$bib->{$fieldname}=$field->{'subfields'}->{$subfield}[0];
                    } else {
***************
*** 770,774 ****
        $elapsedtime,
        $resultstatus, $statuscolor,
!       $id, $term, $type, $done, $numrecords, $length, 
        $startdate, $enddate, $servers,
        $record,$bib,$title,
--- 787,791 ----
        $elapsedtime,
        $resultstatus, $statuscolor,
!       $id, $term, $type, $done, 
        $startdate, $enddate, $servers,
        $record,$bib,$title,
***************
*** 783,792 ****
      # Check queued queries
      $sth=$dbh->prepare("select id,term,type,done,
!               numrecords,length(results),startdate,enddate,servers 
        from z3950queue 
        order by id desc 
        limit 20 ");
      $sth->execute;
!     while ( ($id, $term, $type, $done, $numrecords, $length, 
                $startdate, $enddate, $servers) = $sth->fetchrow) {
        $type=uc($type);
--- 800,809 ----
      # Check queued queries
      $sth=$dbh->prepare("select id,term,type,done,
!               startdate,enddate,servers 
        from z3950queue 
        order by id desc 
        limit 20 ");
      $sth->execute;
!     while ( ($id, $term, $type, $done, 
                $startdate, $enddate, $servers) = $sth->fetchrow) {
        $type=uc($type);




reply via email to

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