summaryrefslogtreecommitdiff
path: root/httemplate/search/elements
diff options
context:
space:
mode:
authorjeff <jeff>2009-08-25 19:08:19 +0000
committerjeff <jeff>2009-08-25 19:08:19 +0000
commit1a8d05e7a4345862e9ffb71d00bb07dd178017f0 (patch)
tree9f902d27f4229c82c4e1a4dc3e17d18a3629e167 /httemplate/search/elements
parent2b1f6ef77f0ef347897a060cfe94bbff2e3f6c76 (diff)
improved 477 report #6004
Diffstat (limited to 'httemplate/search/elements')
-rw-r--r--httemplate/search/elements/search.html29
1 files changed, 20 insertions, 9 deletions
diff --git a/httemplate/search/elements/search.html b/httemplate/search/elements/search.html
index a66176d00..4bfe8b091 100644
--- a/httemplate/search/elements/search.html
+++ b/httemplate/search/elements/search.html
@@ -16,7 +16,8 @@ Example:
# (deprecated, will be singularlized
# simplisticly)
- #literal SQL query string (deprecated?) or qsearch hashref
+ #literal SQL query string (deprecated?) or qsearch hashref or arrayref
+ #of qsearch hashrefs for a union of qsearches
'query' => {
'table' => 'tablename',
#everything else is optional...
@@ -347,6 +348,15 @@ my $header = [ map { ref($_) ? $_->{'label'} : $_ } @{$opt{header}} ];
my $rows;
if ( ref($opt{query}) ) {
+ my @query;
+ if (ref($opt{query}) eq 'HASH') {
+ @query = ( $opt{query} );
+ } elsif (ref($opt{query}) eq 'ARRAY') {
+ @query = @{ $opt{query} };
+ } else {
+ die "invalid query reference";
+ }
+
if ( $opt{disableable} && ! $cgi->param('showdisabled') ) {
#%search = ( 'disabled' => '' );
$opt{'query'}->{'hashref'}->{'disabled'} = '';
@@ -354,14 +364,15 @@ if ( ref($opt{query}) ) {
}
#eval "use FS::$opt{'query'};";
- $rows = [ qsearch({
- 'select' => $opt{'query'}->{'select'},
- 'table' => $opt{'query'}->{'table'},
- 'addl_from' => (exists($opt{'query'}->{'addl_from'}) ? $opt{'query'}->{'addl_from'} : ''),
- 'hashref' => $opt{'query'}->{'hashref'} || {},
- 'extra_sql' => $opt{'query'}->{'extra_sql'},
- 'order_by' => $opt{'query'}->{'order_by'}. " $limit",
- }) ];
+ my @param = qw( select table addl_from hashref extra_sql order_by );
+ $rows = [ qsearch( [ map { my $query = $_;
+ ({ map { $_ => $query->{$_} } @param });
+ }
+ @query
+ ],
+ 'order_by' => $opt{order_by}. " ". $limit,
+ )
+ ];
} else {
my $sth = dbh->prepare("$opt{'query'} $limit")
or die "Error preparing $opt{'query'}: ". dbh->errstr;