[Koha-cvs] CVS: koha search.pl,1.8,1.9
Chris Cormack
rangi at users.sourceforge.net
Wed May 15 06:36:53 CEST 2002
Update of /cvsroot/koha/koha
In directory usw-pr-cvs1:/tmp/cvs-serv6499
Modified Files:
search.pl
Log Message:
Reverting back to old search.pl (for now)
The html::template version is in html-template
Index: search.pl
===================================================================
RCS file: /cvsroot/koha/koha/search.pl,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -r1.8 -r1.9
*** search.pl 15 May 2002 04:12:24 -0000 1.8
--- search.pl 15 May 2002 04:36:51 -0000 1.9
***************
*** 1,139 ****
#!/usr/bin/perl
! use HTML::Template;
use strict;
- require Exporter;
- use C4::Database;
- use CGI;
use C4::Search;
! use C4::Output; # no contains picktemplate
!
! my $query=new CGI;
! my $language='french';
! my %configfile;
! open (KC, "/etc/koha.conf");
! while (<KC>) {
! chomp;
! (next) if (/^\s*#/);
! if (/(.*)\s*=\s*(.*)/) {
! my $variable=$1;
! my $value=$2;
! # Clean up white space at beginning and end
! $variable=~s/^\s*//g;
! $variable=~s/\s*$//g;
! $value=~s/^\s*//g;
! $value=~s/\s*$//g;
! $configfile{$variable}=$value;
! }
! }
! #print $query->header;
! my $includes=$configfile{'includes'};
! ($includes) || ($includes="/usr/local/www/hdl/htdocs/includes");
! my $templatebase="catalogue/searchresults.tmpl";
! my $startfrom=$query->param('startfrom');
! ($startfrom) || ($startfrom=0);
! my $theme=picktemplate($includes, $templatebase);
!
! my $subject=$query->param('subject');
! # if its a subject we need to use the subject.tmpl
! if ($subject) {
! $templatebase=~ s/searchresults\.tmpl/subject\.tmpl/;
! $theme=picktemplate($includes, $templatebase);
! }
! my $template = HTML::Template->new(filename => "$includes/templates/$theme/$templatebase", die_on_bad_params => 0, path => [$includes]);
! my $env;
! $env->{itemcount}=1;
! # get all the search variables
! # we assume that C4::Search will validate these values for us
! my %search;
! my $keyword=$query->param('keyword');
! $search{'keyword'}=$keyword;
$search{'subject'}=$subject;
! my $author=$query->param('author');
! $search{'author'}=$author;
! my $illustrator=$query->param('illustrator');
! $search{'param'}=$illustrator;
! my $itemnumber=$query->param('itemnumber');
! $search{'itemnumber'}=$itemnumber;
! my $isbn=$query->param('isbn');
$search{'isbn'}=$isbn;
! my $datebefore=$query->param('date-before');
! $search{'date-before'}=$datebefore;
! my $class=$query->param('class');
$search{'class'}=$class;
! my $dewey=$query->param('dewey');
! $search{'dewey'};
! my $branch=$query->param('branch');
! $search{'branch'}=$branch;
! my $title=$query->param('title');
! $search{'title'}=$title;
! my $ttype=$query->param('ttype');
$search{'ttype'}=$ttype;
! my $forminputs;
! ($keyword) && (push @$forminputs, { line => "keyword=$keyword"});
! ($subject) && (push @$forminputs, { line => "subject=$subject"});
! ($author) && (push @$forminputs, { line => "author=$author"});
! ($illustrator) && (push @$forminputs, { line => "illustrator=$illustrator"});
! ($itemnumber) && (push @$forminputs, { line => "itemnumber=$itemnumber"});
! ($isbn) && (push @$forminputs, { line => "isbn=$isbn"});
! ($datebefore) && (push @$forminputs, { line => "date-before=$datebefore"});
! ($class) && (push @$forminputs, { line => "class=$class"});
! ($dewey) && (push @$forminputs, { line => "dewey=$dewey"});
! ($branch) && (push @$forminputs, { line => "branch=$branch"});
! ($title) && (push @$forminputs, { line => "title=$title"});
! ($ttype) && (push @$forminputs, { line => "ttype=$ttype"});
! $template->param(FORMINPUTS => $forminputs);
! # whats this for?
! # I think it is (or was) a search from the "front" page... [st]
! $search{'front'}=$query->param('front');
!
! my $num=20;
! my ($count, at results)=catalogsearch($env,'',\%search,$num,$startfrom);
!
! my $resultsarray=\@results;
!
! my $search="num=20";
! if ($keyword){
! $search=$search."&keyword=$keyword";
! }
! if ($subject){
! $search=$search."&subject=$subject";
! }
! if ($author){
! $search=$search."&author=$author";
! }
! if ($class){
! $search=$search."&class=$class";
! }
! if ($title){
! $search=$search."&title=$title";
! }
! if ($dewey){
! $search=$search."&dewey=$dewey";
! }
! $search.="&ttype=$ttype";
!
! $search=~ s/ /%20/g;
! $template->param(startfrom => $startfrom+1);
! $template->param(endat => $startfrom+20);
! $template->param(numrecords => $count);
! my $nextstartfrom=($startfrom+20<$count-20) ? ($startfrom+20) : ($count-20);
! my $prevstartfrom=($startfrom-20>0) ? ($startfrom-20) : (0);
! $template->param(nextstartfrom => $nextstartfrom);
! $template->param(prevstartfrom => $prevstartfrom);
! $template->param(search => $search);
! $template->param(SEARCH_RESULTS => $resultsarray);
! $template->param(includesdir => $includes);
! print "Content-Type: text/html\n\n", $template->output;
--- 1,330 ----
#!/usr/bin/perl
! #script to provide intranet (librarian) advanced search facility
!
use strict;
use C4::Search;
! use CGI;
! use C4::Output;
+ my $env;
+ my $input = new CGI;
+ print $input->header;
+ #print $input->dump;
+
+ #whether it is called from the opac or the intranet
+ my $type=$input->param('type');if ($type eq ''){
+ $type = 'intra';
+ }
! my $ttype=$input->param('ttype');
+ #setup colours
+ my $main;
+ my $secondary;
+
+ if ($type eq 'opac'){
+ $main='#99cccc';
+ $secondary='#efe5ef';
+ } else {
+ $main='#cccc99';
+ $secondary='#ffffcc';
+ }
! #print $input->Dump;
! my $blah;
! my %search;
! #build hash of users input
! my $title=validate($input->param('title'));
! $search{'title'}=$title;
! my $keyword=validate($input->param('keyword'));
! $search{'keyword'}=$keyword;
! $search{'front'}=validate($input->param('front'));
! my $author=validate($input->param('author'));
! $search{'author'}=$author;
+ my $illustrator=validate($input->param('illustrator'));
+ $search{'illustrator'}=$illustrator;
+
+ my $subject=validate($input->param('subject'));
$search{'subject'}=$subject;
!
! my $itemnumber=validate($input->param('item'));
! $search{'item'}=$itemnumber;
!
! my $isbn=validate($input->param('isbn'));
$search{'isbn'}=$isbn;
!
! my $datebefore=validate($input->param('date-before'));
! $search{'date-before'};
!
! my $class=$input->param('class');
$search{'class'}=$class;
!
$search{'ttype'}=$ttype;
! my $dewey=validate($input->param('dewey'));
! $search{'dewey'}=$dewey;
+ my $branch=validate($input->param('branch'));
+ $search{'branch'}=$branch;
! my @results;
! my $offset=$input->param('offset');
! if ($offset eq ''){
! $offset=0;
! }
! my $num=$input->param('num');
! if ($num eq ''){
! $num=10;
! }
! print startpage();
! print startmenu($type);
! #print $type;
! #print $search{'ttype'};
! if ($type eq 'intra'){
! print mkheadr(1,'Catalogue Search Results');
! } elsif ($type eq 'catmain'){
! print mkheadr(1,'Catalogue Maintenance');
! } else {
! print mkheadr(1,'Opac Search Results');
! }
! print center();
! my $count;
! my @results;
! if ($itemnumber ne '' || $isbn ne ''){
! ($count, at results)=&CatSearch(\$blah,'precise',\%search,$num,$offset);
! } else {
! if ($subject ne ''){
! ($count, at results)=&CatSearch(\$blah,'subject',\%search,$num,$offset);
! } else {
! if ($keyword ne ''){
! ($count, at results)=&KeywordSearch(\$blah,'intra',\%search,$num,$offset);
! }elsif ($title ne '' || $author ne '' || $illustrator ne '' || $dewey ne '' || $class ne '') {
! ($count, at results)=&CatSearch(\$blah,'loose',\%search,$num,$offset);
! }
! }
! }
! print "You searched on ";
! while ( my ($key, $value) = each %search) {
! if ($value ne '' && $key ne 'ttype'){
! $value=~ s/\\//g;
! print bold("$key $value,");
! }
! }
! print " $count results found";
! my $offset2=$num+$offset;
! my $dispnum=$offset+1;
! print "<br> Results $dispnum to $offset2 displayed";
! print mktablehdr;
! if ($type ne 'opac'){
! if ($subject ne ''){
! print mktablerow(1,$main,'<b>SUBJECT</b>','/images/background-mem.gif');
! } elsif ($illustrator ne '') {
! print mktablerow(7,$main,'<b>TITLE</b>','<b>AUTHOR</b>', '<b>ILLUSTRATOR<b>', bold('©'),'<b>COUNT</b>',bold('LOCATION'),'','/images/background-mem.gif');
! } else {
! print mktablerow(6,$main,'<b>TITLE</b>','<b>AUTHOR</b>',bold('©'),'<b>COUNT</b>',bold('LOCATION'),'','/images/background-mem.gif');
! }
! } else {
! if ($subject ne ''){
! print mktablerow(6,$main,'<b>SUBJECT</b>',' ',' ');
! } elsif ($illustrator ne '') {
! print mktablerow(7,$main,'<b>TITLE</b>','<b>AUTHOR</b>','<b>ILLUSTRATOR</b>', bold('©'),'<b>COUNT</b>',bold('BRANCH'),'');
! } else {
! print mktablerow(6,$main,'<b>TITLE</b>','<b>AUTHOR</b>',bold('©'),'<b>COUNT</b>',bold('BRANCH'),'');
! }
! }
! my $count2=@results;
! if ($keyword ne '' && $offset > 0){
! $count2=$count-$offset;
! if ($count2 > 10){
! $count2=10;
! }
! }
! #print $count2;
! my $i=0;
! my $colour=1;
! while ($i < $count2){
! # print $results[$i]."\n";
! # my @stuff=split('\t',$results[$i]);
! my $result=$results[$i];
! $result->{'title'}=~ s/\`/\\\'/g;
! my $title2=$result->{'title'};
! $title2=~ s/ /%20/g;
! my $location='';
! my $itemcount;
! if ($subject eq ''){
! $result->{'title'}=mklink("/cgi-bin/koha/detail.pl?type=$type&bib=$result->{'biblionumber'}&title=$title2",$result->{'title'});
! my $word=$result->{'author'};
! $word=~ s/([a-z]) +([a-z])/$1%20$2/ig;
! $word=~ s/ //g;
! $word=~ s/ /%20/g;
! $word=~ s/\,/\,%20/g;
! $word=~ s/\n//g;
! my $url="/cgi-bin/koha/search.pl?author=$word&type=$type";
! $result->{'author'}=mklink($url,$result->{'author'});
! my ($count,$lcount,$nacount,$fcount,$scount,$lostcount,$mending,$transit,$ocount)=itemcount($env,$result->{'biblionumber'},$type);
! $itemcount=$count;
! ####
! # Fix this chunk below, remove all hardcoded branch references
! # need to fix itemcount as well
! ###
! if ($nacount > 0){
! $location=$location."On Loan";
! if ($nacount >1 ){
! $location=$location." ($nacount)";
! }
! $location.=" ";
! }
! if ($lcount > 0){
! $location=$location."Levin";
! if ($lcount >1 ){
! $location=$location." ($lcount)";
! }
! $location.=" ";
! }
! if ($fcount > 0){
! $location=$location."Foxton";
! if ($fcount >1 ){
! $location=$location." ($fcount)";
! }
! $location.=" ";
! }
! if ($scount > 0){
! $location=$location."Shannon";
! if ($scount >1 ){
! $location=$location." ($scount)";
! }
! $location.=" ";
! }
! if ($lostcount > 0){
! $location=$location."Lost";
! if ($lostcount >1 ){
! $location=$location." ($lostcount)";
! }
! $location.=" ";
! }
! if ($mending > 0){
! $location=$location."Mending";
! if ($mending >1 ){
! $location=$location." ($mending)";
! }
! $location.=" ";
! }
! if ($transit > 0){
! $location=$location."In Transiit";
! if ($transit >1 ){
! $location=$location." ($transit)";
! }
! $location.=" ";
! }
! if ($ocount > 0){
! $location=$location."On Order";
! if ($ocount >1 ){
! $location=$location." ($ocount)";
! }
! $location.=" ";
! }
!
! # if ($type ne 'opac'){
! # $result->{'request'}=mklink("/cgi-bin/koha/request.pl?bib=$stuff[2]","Request");
! # }
! } else {
! my $word=$result->{'subject'};
! $word=~ s/ /%20/g;
!
! $result->{'title'}=mklink("/cgi-bin/koha/subjectsearch.pl?subject=$word&type=$type",$result->{'subject'});
!
! }
!
! if ($colour == 1){
! if ($illustrator) {
! print mktablerow(7,$secondary,$result->{'title'},$result->{'author'},$result->{'illus'},$result->{'copyrightdate'},$itemcount,$location);
! } else {
! print mktablerow(6,$secondary,$result->{'title'},$result->{'author'},$result->{'copyrightdate'},$itemcount,$location);
! }
! $colour=0;
! } else {
! if ($illustrator) {
! print mktablerow(7,'white',$result->{'title'},$result->{'author'},$result->{'illus'},$result->{'copyrightdate'},$itemcount,$location);
! } else {
! print mktablerow(6,'white',$result->{'title'},$result->{'author'},$result->{'copyrightdate'},$itemcount,$location);
! }
! $colour=1;
! }
! $i++;
! }
! $offset=$num+$offset;
! if ($type ne 'opac'){
! if ($illustrator) {
! print mktablerow(7,$main,' ',' ',' ',' ','','','','/images/background-mem.gif');
! } else {
! print mktablerow(6,$main,' ',' ',' ',' ','','','/images/background-mem.gif');
! }
! } else {
! if ($illustrator) {
! print mktablerow(7,$main,' ',' ',' ',' ','', '','');
! } else {
! print mktablerow(6,$main,' ',' ',' ',' ','','');
! }
! }
! print mktableft();
! my $search;
!
! $search="num=$num&offset=$offset&type=$type";
! if ($subject ne ''){
! $subject=~ s/ /%20/g;
! $search=$search."&subject=$subject";
! }
! if ($title ne ''){
! $title=~ s/ /%20/g;
! $search=$search."&title=$title";
! }
! if ($author ne ''){
! $author=~ s/ /%20/g;
! $search=$search."&author=$author";
! }
! if ($keyword ne ''){
! $keyword=~ s/ /%20/g;
! $search=$search."&keyword=$keyword";
! }
! if ($class ne ''){
! $keyword=~ s/ /%20/g;
! $search=$search."&class=$class";
! }
! if ($dewey ne ''){
! $search=$search."&dewey=$dewey";
! }
! $search.="&ttype=$ttype";
! if ($offset < $count){
! my $stuff=mklink("/cgi-bin/koha/search.pl?$search",'Next');
! print $stuff;
! }
! print "<br>";
! my $pages=$count/10;
! $pages++;
! for (my $i=1;$i<$pages;$i++){
! my $temp=$i*10;
! $temp=$temp-10;
! $search=~ s/offset=[0-9]+/offset=$temp/;
! my $stuff=mklink("/cgi-bin/koha/search.pl?$search",$i);
! print "$stuff ";
! }
!
! print endcenter();
! print endmenu($type);
! print endpage();
+
+ sub validate {
+ my ($input)=@_;
+ $input=~ s/\<[a-z]+\>//gi;
+ $input=~ s/\<\/[a-z]+\>//gi;
+ $input=~ s/\<//g;
+ $input=~ s/\>//g;
+ $input=~ s/^%//g;
+ return($input);
+ }
More information about the Koha-cvs
mailing list