From cd14fd421c6908a73174d2cd0267779b9fd4e08f Mon Sep 17 00:00:00 2001 From: Nahuel ANGELINETTI Date: Wed, 12 May 2010 15:59:06 +0200 Subject: [PATCH] (bug #4491) fix weird code in search scripts This change some code a bit strange, that generate strange effetcs. Now we use $cgi->param to get the values. --- catalogue/search.pl | 17 ++++++----------- opac/opac-search.pl | 16 ++++++---------- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/catalogue/search.pl b/catalogue/search.pl index c5070e9a50..e0311535ac 100755 --- a/catalogue/search.pl +++ b/catalogue/search.pl @@ -336,7 +336,7 @@ my @sort_by; my $default_sort_by = C4::Context->preference('defaultSortField')."_".C4::Context->preference('defaultSortOrder') if (C4::Context->preference('defaultSortField') && C4::Context->preference('defaultSortOrder')); -@sort_by = split("\0",$params->{'sort_by'}) if $params->{'sort_by'}; +@sort_by = $cgi->param('sort_by'); $sort_by[0] = $default_sort_by unless $sort_by[0]; foreach my $sort (@sort_by) { $template->param($sort => 1); @@ -344,8 +344,7 @@ foreach my $sort (@sort_by) { $template->param('sort_by' => $sort_by[0]); # Use the servers defined, or just search our local catalog(default) -my @servers; -@servers = split("\0",$params->{'server'}) if $params->{'server'}; +my @servers = $cgi->param('server'); unless (@servers) { #FIXME: this should be handled using Context.pm @servers = ("biblioserver"); @@ -353,13 +352,11 @@ unless (@servers) { } # operators include boolean and proximity operators and are used # to evaluate multiple operands -my @operators; -@operators = split("\0",$params->{'op'}) if $params->{'op'}; +my @operators = $cgi->param('op'); # indexes are query qualifiers, like 'title', 'author', etc. They # can be single or multiple parameters separated by comma: kw,right-Truncation -my @indexes; -@indexes = split("\0",$params->{'idx'}); +my @indexes = $cgi->param('idx'); # if a simple index (only one) display the index used in the top search box if ($indexes[0] && !$indexes[1]) { @@ -367,12 +364,10 @@ if ($indexes[0] && !$indexes[1]) { # an operand can be a single term, a phrase, or a complete ccl query -my @operands; -@operands = split("\0",$params->{'q'}) if $params->{'q'}; +my @operands = $cgi->param('q'); # limits are use to limit to results to a pre-defined category such as branch or language -my @limits; -@limits = split("\0",$params->{'limit'}) if $params->{'limit'}; +my @limits = $cgi->param('limit'); if($params->{'multibranchlimit'}) { push @limits, join(" or ", map { "branch: $_ "} @{GetBranchesInCategory($params->{'multibranchlimit'})}) ; diff --git a/opac/opac-search.pl b/opac/opac-search.pl index 63435a5640..3f5c9599b0 100755 --- a/opac/opac-search.pl +++ b/opac/opac-search.pl @@ -244,7 +244,7 @@ my @sort_by; my $default_sort_by = C4::Context->preference('OPACdefaultSortField')."_".C4::Context->preference('OPACdefaultSortOrder') if (C4::Context->preference('OPACdefaultSortField') && C4::Context->preference('OPACdefaultSortOrder')); -@sort_by = split("\0",$params->{'sort_by'}) if $params->{'sort_by'}; +@sort_by = $cgi->param('sort_by'); $sort_by[0] = $default_sort_by if !$sort_by[0] && defined($default_sort_by); foreach my $sort (@sort_by) { $template->param($sort => 1); # FIXME: security hole. can set any TMPL_VAR here @@ -252,8 +252,7 @@ foreach my $sort (@sort_by) { $template->param('sort_by' => $sort_by[0]); # Use the servers defined, or just search our local catalog(default) -my @servers; -@servers = split("\0",$params->{'server'}) if $params->{'server'}; +my @servers = $cgi->param('server'); unless (@servers) { #FIXME: this should be handled using Context.pm @servers = ("biblioserver"); @@ -262,20 +261,18 @@ unless (@servers) { # operators include boolean and proximity operators and are used # to evaluate multiple operands -my @operators; -@operators = split("\0",$params->{'op'}) if $params->{'op'}; +my @operators = $cgi->param('op'); # indexes are query qualifiers, like 'title', 'author', etc. They # can be single or multiple parameters separated by comma: kw,right-Truncation -my @indexes = exists($params->{'idx'}) ? split("\0",$params->{'idx'}) : (); +my @indexes = $cgi->param('idx'); # if a simple index (only one) display the index used in the top search box if ($indexes[0] && !$indexes[1]) { $template->param("ms_".$indexes[0] => 1); } # an operand can be a single term, a phrase, or a complete ccl query -my @operands; -@operands = split("\0",$params->{'q'}) if $params->{'q'}; +my @operands = $cgi->param('q'); # if a simple search, display the value in the search box if ($operands[0] && !$operands[1]) { @@ -283,8 +280,7 @@ if ($operands[0] && !$operands[1]) { } # limits are use to limit to results to a pre-defined category such as branch or language -my @limits; -@limits = split("\0",$params->{'limit'}) if $params->{'limit'}; +my @limits = $cgi->param('limit'); if($params->{'multibranchlimit'}) { push @limits, join(" or ", map { "branch: $_ "} @{GetBranchesInCategory($params->{'multibranchlimit'})}) ; -- 2.20.1