From e2f06e613bfadac639aad7bb8ce7c920b6c161bd Mon Sep 17 00:00:00 2001 From: genjimoto Date: Thu, 2 Jun 2005 00:47:58 +0000 Subject: [PATCH] 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. --- opac/searchoptions.pl | 122 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 opac/searchoptions.pl diff --git a/opac/searchoptions.pl b/opac/searchoptions.pl new file mode 100644 index 0000000000..6448d46e6d --- /dev/null +++ b/opac/searchoptions.pl @@ -0,0 +1,122 @@ +#!/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("|",@brancheswanted) +} + +if ($searchtype eq 'NewSearch'){ + + $newquery .= '&marclist='; + $newquery .= '&and_or=and'; + $newquery .= '&excluding='; + $newquery .= '&operator=contains'; + $newquery .= '&value='; + $newquery .=join(" ",@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(" ",@keywords) + } + } + $count++; + + } + if ($subfoundbool == 0 && $query->param('keysub') ne ''){ + $newquery .= '&marclist=&and_or=and&excluding=&operator=contains&value='; + $newquery .=join(" ",@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"); -- 2.39.5