[Koha-cvs] CVS: koha/opac searchoptions.pl,NONE,1.1
Waylon Robertson
genjimoto at users.sourceforge.net
Thu Jun 2 02:48:00 CEST 2005
Update of /cvsroot/koha/koha/opac
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9118
Added Files:
searchoptions.pl
Log Message:
Processes the Search options sidebar input, and places it into terms and values for opac-search.pl. Also passes along itemtypes to search on, branches to search on, and availablity bool.
--- NEW FILE ---
#!/usr/bin/perl
use strict;
require Exporter;
# Searching within results is done by simply adding on parameters onto the query, being careful to have the requried marclist etc fields.
use C4::Database;
use C4::Interface::CGI::Output;
use C4::Context;
use CGI;
my $query = new CGI;
my $newquery='';
my $allitemtypesbool = $query->param("allitemtypes");
my $allbranchesbool = $query->param("allbranches");
my $allcategoriesbool = $query->param("allcategories");
my $allsubcategoriesbool = $query->param("allsubcategories");
my $allmediatypesbool = $query->param("allmediatypes");
my $nbstatements = $query->param("nbstatementsori");
my $orderby = $query->param("orderbyori");
my @keywords = $query->param("keyword");
my @marclist = $query->param('marclist');
my @and_or = $query->param('and_or');
my @excluding = $query->param('excluding');
my @operator = $query->param('operator');
my @value = $query->param('value');
my $searchtype = $query->param('searchtype');
my $category = $query->param('categorylist');
my @itemtypeswanted = $query->param("itemtypeswanted");
my $itemtypessearched = $query->param("itemtypessearched");
my @mediatypeswanted = $query->param("mediatypeswanted");
my @subcategorieswanted = $query->param("subcategorieswanted");
my @brancheswanted = $query->param("brancheswanted");
my $avail = $query->param("avail");
my $brancheslist;
my $count=0;
my $newquery='';
my $subfoundbool=0;
my $itemtypefoundbool=0;
my $branchfoundbool=0;
my $itemtypeslist;
my $itemtypescatlist;
my $itemtypessubcatlist;
my $mediatypeslist;
$count=0;
my $dbh=C4::Context->dbh;
$newquery='op=do_search&nbstatements='.$nbstatements;
if ($allcategoriesbool eq '' && $category ne ''){
my $sth=$dbh->prepare("select itemtypecodes from categorytable where categorycode=?");
$sth->execute($category);
$itemtypescatlist = $sth->fetchrow .'|';
$sth->finish;
}
if ($allmediatypesbool eq '' && @mediatypeswanted ne ''){
foreach my $mediatype (@mediatypeswanted){
my $sth=$dbh->prepare("select itemtypecodes from mediatypetable where mediatypecode=?");
$sth->execute($mediatype);
$mediatypeslist .= $sth->fetchrow.'|';
$sth->finish;
}
}
if ($allsubcategoriesbool eq '' && @subcategorieswanted ne ''){
foreach my $subcategory (@subcategorieswanted){
my $sth=$dbh->prepare("select itemtypecodes from subcategorytable where subcategorycode=?");
$sth->execute($subcategory);
$itemtypessubcatlist .= $sth->fetchrow.'|';
$sth->finish;
}
}
if ($allitemtypesbool ne ''){
#warn @itemtypeswanted;
$itemtypeslist .=$itemtypescatlist.$itemtypessubcatlist.$mediatypeslist.$itemtypessearched.join ("|", @itemtypeswanted)
} else {
$itemtypeslist .=$itemtypescatlist.$itemtypessubcatlist.$mediatypeslist.$itemtypessearched
}
#warn $itemtypeslist;
if ($allbranchesbool == 0){
$brancheslist = join("|", at brancheswanted)
}
if ($searchtype eq 'NewSearch'){
$newquery .= '&marclist=';
$newquery .= '&and_or=and';
$newquery .= '&excluding=';
$newquery .= '&operator=contains';
$newquery .= '&value=';
$newquery .=join(" ", at keywords)
} elsif ($searchtype eq 'SearchWithin'){
foreach my $marclistitem (@marclist) {
$newquery .= '&marclist='.$marclist[$count];
$newquery .= '&and_or='.$and_or[$count];
$newquery .= '&excluding='.$excluding[$count];
$newquery .= '&operator=';
$newquery .= $operator[$count];
$newquery .= '&value='.$value[$count];
if ($marclist[$count] eq ''){
if ($subfoundbool=0){
$subfoundbool=1;
$newquery .=" ".join(" ", at keywords)
}
}
$count++;
}
if ($subfoundbool == 0 && $query->param('keysub') ne ''){
$newquery .= '&marclist=&and_or=and&excluding=&operator=contains&value=';
$newquery .=join(" ", at keywords)
}
}
$newquery .= '&orderby='.$orderby;
if ($itemtypeslist ne ''){
$newquery .= '&itemtypesstring="'.$itemtypeslist.'"'
}
if ($brancheslist ne ''){
$newquery .= '&branchesstring="'.$brancheslist.'"';
}
if ($avail ne ''){
$newquery .= '&avail=1'
}
print $query->redirect("/cgi-bin/koha/opac-search.pl?$newquery");
More information about the Koha-cvs
mailing list