koha-cvs
[Top][All Lists]
Advanced

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

[Koha-cvs] koha cataloguing/z3950_search.pl koha-tmpl/intr... [rel_3_0]


From: paul poulain
Subject: [Koha-cvs] koha cataloguing/z3950_search.pl koha-tmpl/intr... [rel_3_0]
Date: Thu, 11 Jan 2007 14:16:28 +0000

CVSROOT:        /sources/koha
Module name:    koha
Branch:         rel_3_0
Changes by:     paul poulain <tipaul>   07/01/11 14:16:28

Added files:
        cataloguing    : z3950_search.pl 
        koha-tmpl/intranet-tmpl/prog/en/cataloguing: z3950_search.tmpl 

Log message:
        adding forgotten z3950 client files (script & template)
        
        SANOP : you'll have to add those to make z3950 client work !

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/cataloguing/z3950_search.pl?cvsroot=koha&only_with_tag=rel_3_0&rev=1.1.2.1
http://cvs.savannah.gnu.org/viewcvs/koha/koha-tmpl/intranet-tmpl/prog/en/cataloguing/z3950_search.tmpl?cvsroot=koha&only_with_tag=rel_3_0&rev=1.1.2.1

Patches:
Index: cataloguing/z3950_search.pl
===================================================================
RCS file: cataloguing/z3950_search.pl
diff -N cataloguing/z3950_search.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ cataloguing/z3950_search.pl 11 Jan 2007 14:16:28 -0000      1.1.2.1
@@ -0,0 +1,218 @@
+#!/usr/bin/perl
+# This is a completely new Z3950 clients search using async ZOOM -TG 02/11/06
+# Copyright 2000-2002 Katipo Communications
+#
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA  02111-1307 USA
+
+use strict;
+use CGI;
+
+use C4::Auth;
+use C4::Output;
+use C4::Interface::CGI::Output;
+use C4::Biblio;
+use C4::Context;
+use C4::Breeding;
+use C4::Koha;
+use ZOOM;
+
+my $input = new CGI;
+my $dbh = C4::Context->dbh;
+my $error = $input->param('error');
+my $biblionumber=$input->param('biblionumber');
+$biblionumber=0 unless $biblionumber;
+my $frameworkcode=$input->param('frameworkcode');
+my $title = $input->param('title');
+my $author = $input->param('author');
+my $isbn = $input->param('isbn');
+my $issn = $input->param('issn');
+my $random = $input->param('random');
+my $op=$input->param('op');
+my $noconnection;
+my $numberpending;
+my $attr='';
+my $term;
+my $host;
+my $server;
+my $database;
+my $port;
+my $marcdata;
+my @encoding;
+my @results;
+my $count;
+my $toggle;
+my $record;
+my $oldbiblio;
+my $dbh = C4::Context->dbh;
+my $errmsg;
+my @serverloop=();
+my @serverhost;
+my @breeding_loop = ();
+
+my $DEBUG = 0; # if set to 1, many debug message are send on syslog.
+
+unless ($random) { # this var is not useful anymore just kept to keep rel2_2 
compatibility
+    $random =rand(1000000000);
+}
+
+my ($template, $loggedinuser, $cookie)= get_template_and_user({
+                template_name => "cataloguing/z3950_search.tmpl",
+                query => $input,
+                type => "intranet",
+                authnotrequired => 1,
+                flagsrequired => {catalogue => 1},
+                debug => 1,
+                });
+
+$template->param(
+        intranetcolorstylesheet => 
C4::Context->preference("intranetcolorstylesheet"),
+        intranetstylesheet => C4::Context->preference("intranetstylesheet"),
+        IntranetNav => C4::Context->preference("IntranetNav"),
+        frameworkcode => $frameworkcode,
+        );
+
+if ($op ne "do_search"){
+    my $sth=$dbh->prepare("select id,host,checked from z3950servers  order by 
host");
+    $sth->execute();
+    while ($server=$sth->fetchrow_hashref) {
+        my %temploop;
+        $temploop{server}=$server->{host};
+        $temploop{id}=$server->{id};
+        $temploop{checked}=$server->{checked};
+        push (@serverloop, \%temploop);
+    }
+    $template->param(isbn=>$isbn, issn=>$issn,title=>$title,author=>$author,
+                        serverloop => address@hidden,
+                        opsearch => "search",
+                        biblionumber => $biblionumber,
+                        );
+    output_html_with_http_headers $input, $cookie, $template->output;
+}else{
+    my @id=$input->param('id');
+    my @oConnection;
+    my @oResult;
+    my $s=0;
+                            
+    if ($isbn ne "/" || $issn ne "/") {
+        $attr='1=7';
+#         warn "isbn : $isbn";
+        $term=$isbn if ($isbn ne "/");
+        $term=$issn if ($issn ne "/");
+    } elsif ($title ne "/") {
+        $attr='1=4 @attr 4=1  ';
+        $term=$title;
+    } elsif ($author ne "/") {
+        $attr='1=1003';
+        $term=$author;
+    } 
+
+    my $query="address@hidden $attr \"$term\"";        
+    warn "query ".$query if $DEBUG;
+    foreach my $servid (@id){
+        my $sth=$dbh->prepare("select * from z3950servers where id=?");
+        $sth->execute($servid);
+        while ($server=$sth->fetchrow_hashref) {
+            my $noconnection=0;                                                
        
+            my $option1=new ZOOM::Options();
+            $option1->option('async'=>1);
+            $option1->option('elementSetName', 'F');
+            $option1->option('databaseName',$server->{db})  ;
+            $option1->option('user',$server->{userid}) if $server->{userid};
+            $option1->option('password',$server->{password})  if 
$server->{password};
+            $option1->option('preferredRecordSyntax', $server->{syntax});
+            $oConnection[$s]=create ZOOM::Connection($option1) || $DEBUG && 
warn ("something went wrong: ".$oConnection[$s]->errmsg());
+            warn ("server data",$server->{name}, $server->{port}) if $DEBUG;
+            $oConnection[$s]->connect($server->{host}, $server->{port}) || 
$DEBUG && warn ("something went wrong: ".$oConnection[$s]->errmsg());
+            $serverhost[$s]=$server->{host};
+            $encoding[$s]=$server->{syntax};
+            $s++;
+        }## while fetch
+    }# foreach
+    my $nremaining = $s;
+    my $firstresult=1;
+
+    for (my $z=0 ;$z<$s;$z++){
+        warn "doing the search" if $DEBUG;
+        $oResult[$z] = $oConnection[$z]->search_pqf($query) || $DEBUG && warn 
("somthing went wrong: " . $oConnection[$s]->errmsg());
+#$oResult[$z] = $oConnection[$z]->search_pqf($query);
+    }
+
+AGAIN:
+    my $k;
+    my $event;
+    while (($k = ZOOM::event(address@hidden)) != 0) {
+        $event = $oConnection[$k-1]->last_event();
+        warn ("connection ", $k-1, ": event $event (", 
ZOOM::event_str($event), ")\n") if $DEBUG;
+        last if $event == ZOOM::Event::ZEND;
+    }
+
+    if ($k != 0) {
+        $k--;
+        warn $serverhost[$k] if $DEBUG;
+        my($error, $errmsg, $addinfo, $diagset) = $oConnection[$k]->error_x();
+        if ($error) {
+            warn "$k $serverhost[$k] error $query: $errmsg ($error) 
$addinfo\n" if $DEBUG;
+            goto MAYBE_AGAIN;
+        }
+        my $numresults=$oResult[$k]->size() ;
+        my $i;
+        my $result='';
+        if ($numresults>0){
+            for ($i=0; $i<(($numresults<5) ? ($numresults) : (5)) ; $i++) {
+                my $rec=$oResult[$k]->record($i);
+                my $marcrecord;
+                $marcdata = $rec->raw();
+                $marcrecord= FixEncoding($marcdata);
+####WARNING records coming from Z3950 clients are in various character sets 
MARC8,UTF8,UNIMARC etc
+## In HEAD i change everything to UTF-8
+# In rel2_2 i am not sure what encoding is so no character conversion is done 
here
+##Add necessary encoding changes to here -TG
+                my $oldbiblio = MARCmarc2koha($dbh,$marcrecord,"");
+                $oldbiblio->{isbn} =~ s/ |-|\.//g,
+                $oldbiblio->{issn} =~ s/ |-|\.//g,
+                my 
($notmarcrecord,$alreadyindb,$alreadyinfarm,$imported,$breedingid)=ImportBreeding($marcdata,1,$serverhost[$k],$encoding[$k],$random);
+                my %row_data;
+                if ($i % 2) {
+                    $toggle="#ffffcc";
+                } else {
+                    $toggle="white";
+                }
+                $row_data{toggle} = $toggle;
+                $row_data{server} = $serverhost[$k];
+                $row_data{isbn} = $oldbiblio->{isbn};
+                $row_data{title} =$oldbiblio->{title};
+                $row_data{author} = $oldbiblio->{author};
+                $row_data{breedingid} = $breedingid;
+                $row_data{biblionumber}=$biblionumber;
+                push (@breeding_loop, \%row_data);
+            }# upto 5 results
+    
+        }#$numresults
+    }# if $k !=0
+    $numberpending=$nremaining-1;
+    $template->param(breeding_loop => address@hidden, server=>$serverhost[$k],
+                numberpending => $numberpending,
+    );
+    output_html_with_http_headers $input, $cookie, $template->output if 
$numberpending==0;
+
+#      print  $template->output  if $firstresult !=1;
+    $firstresult++;
+
+    MAYBE_AGAIN:
+        if (--$nremaining > 0) {
+            goto AGAIN;
+        }
+} ## if op=search

Index: koha-tmpl/intranet-tmpl/prog/en/cataloguing/z3950_search.tmpl
===================================================================
RCS file: koha-tmpl/intranet-tmpl/prog/en/cataloguing/z3950_search.tmpl
diff -N koha-tmpl/intranet-tmpl/prog/en/cataloguing/z3950_search.tmpl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ koha-tmpl/intranet-tmpl/prog/en/cataloguing/z3950_search.tmpl       11 Jan 
2007 14:16:28 -0000      1.1.2.1
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml";>
+<head>
+<title>Z39.50 Search Results</title>
+    <!-- TMPL_IF NAME="TemplateEncoding" --><meta http-equiv="Content-Type" 
content="text/html; charset=<!-- TMPL_VAR NAME="TemplateEncoding" -->"><!-- 
TMPL_ELSE --><meta http-equiv="Content-Type" content="text/html; 
charset=utf-8"><!-- /TMPL_IF -->
+<link rel="shortcut icon" href="/intranet-tmpl/npl/en/includes/favicon.ico" 
type="image/x-icon" />
+<style type="text/css"> 
+    <!-- TMPL_IF NAME="intranetstylesheet" -->@import url(<!-- TMPL_VAR 
NAME='themelang' -->/includes/<!-- TMPL_VAR NAME="intranetstylesheet" -->);<!-- 
TMPL_ELSE -->@import url(<!-- TMPL_VAR NAME='themelang' 
-->/includes/intranet.css);<!-- /TMPL_IF -->
+    <!-- TMPL_IF NAME="intranetcolorstylesheet" -->@import url(<!-- TMPL_VAR 
NAME='themelang' -->/includes/<!-- TMPL_VAR NAME="intranetcolorstylesheet" 
-->);<!-- /TMPL_IF -->
+</style>
+</head>
+
+<body>
+<div id="main-compact">
+<!-- TMPL_IF name="opsearch" -->
+    <h2>Search on</h2>
+    
+    <form method="post" action="z3950_search.pl" name="f">
+    
+    <input type="hidden" name="op" id="op" value="do_search" />
+    <input type="hidden" name="title" value=<!-- TMPL_VAR NAME="title" --> />
+    <input type="hidden" name="author" value=<!-- TMPL_VAR NAME="author" --> />
+    <input type="hidden" name="isbn" value=<!-- TMPL_VAR NAME="isbn" --> />
+    <input type="hidden" name="issn" value=<!-- TMPL_VAR NAME="issn" --> />
+    <input type="hidden" name="frameworkcode" value=<!-- TMPL_VAR 
NAME="frameworkcode" --> />
+    <input type="hidden" name="oldbiblionumber" value="<!-- TMPL_VAR 
NAME="oldbiblionumber" -->" />
+    
+    <!-- TMPL_LOOP name="serverloop" -->
+        <p>
+            <!-- TMPL_IF name="checked" -->
+                <input type="checkbox" name="id" value=<!-- TMPL_VAR NAME="id" 
--> checked="1">
+            <!-- TMPL_ELSE -->
+                <input type="checkbox" name="id" value=<!-- TMPL_VAR NAME="id" 
--> checked="1">
+            <!-- /TMPL_IF --><label><!-- TMPL_VAR NAME="server" --></label>
+        </p>
+    <!-- /TMPL_LOOP -->
+    <input type="submit"  class="submit" value="Search internet" 
onclick="cursor :'wait'"/>
+    </form>
+<!-- TMPL_ELSE -->
+    <h2>Results</h2>
+    <table>
+    <tr>
+        <th>Server</th>
+        <th>Title</th>
+        <th>Author</th>
+        <th>ISBN</th>
+        <th>&nbsp;</th>
+        <th>&nbsp;</th>
+    </tr>
+    <!-- TMPL_IF name="breeding_loop" -->
+    <!-- TMPL_LOOP name="breeding_loop" --> 
+        <tr bgcolor="<!-- TMPL_VAR NAME="toggle" -->">
+            <td><!-- TMPL_VAR name="server" --></td>
+            <td><!-- TMPL_VAR NAME="title" --></td>
+            <td><!-- TMPL_VAR NAME="author" --></td>
+            <td><!-- TMPL_VAR NAME="isbn" --></td>
+            <td><a href="javascript:Import(<!-- TMPL_VAR NAME="breedingid" 
-->,<!-- TMPL_VAR NAME="biblionumber" -->)">Import</a></td> 
+        
+        </tr>
+    <!-- /TMPL_LOOP --> 
+    <!-- TMPL_ELSE -->
+        <tr><td colspan="6">Nothing found</td></tr>
+    <!-- /TMPL_IF -->
+</table>
+<!-- /TMPL_IF -->
+
+</div>
+<!-- TMPL_IF name="numberpending" --><h3 align="center">Still <!-- TMPL_VAR 
NAME="numberpending" --> servers to search</h3><!-- /TMPL_IF -->
+<script language="JavaScript" type="text/javascript">
+    function Import(GetThisOne,biblionumber) {
+        opener.document.location= 
"../cataloguing/addbiblio.pl?biblionumber="+biblionumber+"&z3950=1&frameworkcode=<!--
 TMPL_VAR name="frameworkcode" -->&breedingid="+GetThisOne;
+        self.close();
+        return false;
+    }
+</script>
+</div>
+</body>
+</html>
+




reply via email to

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