[Koha-cvs] CVS: koha/acqui.simple marcimport.pl,1.6.2.18,1.6.2.19

Alan Millar amillar at users.sourceforge.net
Thu Jun 13 00:11:16 CEST 2002


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,
!     )=@_;
!     # 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);





More information about the Koha-cvs mailing list