|
Lines 45-50
use JSON;
Link Here
|
| 45 |
use List::MoreUtils qw/ each_array /; |
45 |
use List::MoreUtils qw/ each_array /; |
| 46 |
use Modern::Perl; |
46 |
use Modern::Perl; |
| 47 |
use URI::Escape; |
47 |
use URI::Escape; |
|
|
48 |
use URI::QueryParam; |
| 48 |
|
49 |
|
| 49 |
use C4::Context; |
50 |
use C4::Context; |
| 50 |
use Koha::Exceptions; |
51 |
use Koha::Exceptions; |
|
Lines 196-204
reproduce this search, and C<$query_desc> set to something else.
Link Here
|
| 196 |
=cut |
197 |
=cut |
| 197 |
|
198 |
|
| 198 |
sub build_query_compat { |
199 |
sub build_query_compat { |
| 199 |
my ( $self, $operators, $operands, $indexes, $orig_limits, $sort_by, $scan, |
200 |
my ( |
| 200 |
$lang, $params ) |
201 |
$self, |
| 201 |
= @_; |
202 |
$operators, |
|
|
203 |
$operands, |
| 204 |
$indexes, |
| 205 |
$orig_limits, |
| 206 |
$sort_by, |
| 207 |
$scan, |
| 208 |
$lang, |
| 209 |
$params |
| 210 |
) = @_; |
| 211 |
|
| 212 |
# TODO: $params? |
| 213 |
my $query_cgi = $self->_build_query_query_string( |
| 214 |
{ |
| 215 |
'operators' => $operators, |
| 216 |
'operands' => $operands, |
| 217 |
'indexes' => $indexes, |
| 218 |
'sort_by' => $sort_by |
| 219 |
} |
| 220 |
); |
| 221 |
my $limit_cgi = $orig_limits && @{$orig_limits} ? |
| 222 |
"&" . $self->_build_limit_query_string({ 'limits' => $orig_limits }) : ''; |
| 202 |
|
223 |
|
| 203 |
#die Dumper ( $self, $operators, $operands, $indexes, $orig_limits, $sort_by, $scan, $lang ); |
224 |
#die Dumper ( $self, $operators, $operands, $indexes, $orig_limits, $sort_by, $scan, $lang ); |
| 204 |
my @sort_params = $self->_convert_sort_fields(@$sort_by); |
225 |
my @sort_params = $self->_convert_sort_fields(@$sort_by); |
|
Lines 235-251
sub build_query_compat {
Link Here
|
| 235 |
$options{expanded_facet} = $params->{expanded_facet}; |
256 |
$options{expanded_facet} = $params->{expanded_facet}; |
| 236 |
my $query = $self->build_query( $query_str, %options ); |
257 |
my $query = $self->build_query( $query_str, %options ); |
| 237 |
|
258 |
|
| 238 |
#die Dumper($query); |
|
|
| 239 |
# We roughly emulate the CGI parameters of the zebra query builder |
| 240 |
my $query_cgi; |
| 241 |
$query_cgi = 'idx=kw&q=' . uri_escape_utf8( $operands->[0] ) if @$operands; |
| 242 |
my $simple_query; |
259 |
my $simple_query; |
| 243 |
$simple_query = $operands->[0] if @$operands == 1; |
260 |
$simple_query = $operands->[0] if @$operands == 1; |
| 244 |
my $query_desc = $simple_query; |
261 |
my $query_desc = $simple_query; |
| 245 |
my $limit = $self->_join_queries( $self->_convert_index_strings(@$limits)); |
262 |
my $limit = $self->_join_queries( $self->_convert_index_strings(@$limits)); |
| 246 |
my $limit_cgi = ( $orig_limits and @$orig_limits ) |
263 |
|
| 247 |
? '&limit=' . join( '&limit=', map { uri_escape_utf8($_) } @$orig_limits ) |
|
|
| 248 |
: ''; |
| 249 |
my $limit_desc; |
264 |
my $limit_desc; |
| 250 |
$limit_desc = "$limit" if $limit; |
265 |
$limit_desc = "$limit" if $limit; |
| 251 |
return ( |
266 |
return ( |
|
Lines 254-259
sub build_query_compat {
Link Here
|
| 254 |
); |
269 |
); |
| 255 |
} |
270 |
} |
| 256 |
|
271 |
|
|
|
272 |
sub _build_query_query_string { |
| 273 |
my ( $self, $query_parts ) = @_; |
| 274 |
my $uri = URI->new("", "http"); |
| 275 |
my $next = each_array( |
| 276 |
@{$query_parts->{operands}}, |
| 277 |
@{$query_parts->{operators}}, |
| 278 |
@{$query_parts->{indexes}} |
| 279 |
); |
| 280 |
while (my ($operand, $operator, $index) = $next->()) { |
| 281 |
last if !$operand; # TODO: Is this sane??? |
| 282 |
$uri->query_param_append('idx' => $index) if $index; |
| 283 |
$uri->query_param_append('q' => $operand) if $operand; |
| 284 |
$uri->query_param_append('op' => $operator) if $operator; |
| 285 |
} |
| 286 |
if ($query_parts->{sort_by}) { |
| 287 |
$uri->query_param('sort_by' => $query_parts->{sort_by}); |
| 288 |
} |
| 289 |
return $uri->query; |
| 290 |
} |
| 291 |
|
| 292 |
sub _build_limit_query_string { |
| 293 |
my ($self, $query_parts) = @_; |
| 294 |
my $uri = URI->new("", "http"); |
| 295 |
$uri->query_param('limit' => $query_parts->{limits}); |
| 296 |
return $uri->query; |
| 297 |
} |
| 298 |
|
| 257 |
=head2 build_authorities_query |
299 |
=head2 build_authorities_query |
| 258 |
|
300 |
|
| 259 |
my $query = $builder->build_authorities_query(\%search); |
301 |
my $query = $builder->build_authorities_query(\%search); |
| 260 |
- |
|
|