my $library_location = $cgi->param('locg') || '';
my $sort_by = '';
my $sort_order = '';
-
+
# Prepage ctx structure
$ctx->{page} = 'rresult' unless $internal;
$ctx->{ids} = [];
$logger->info('EbookAPI: RBDigitalSearch: facet: '.scalar(@facets));
- # filters
- my $filters = [];
-
- # Build array with Search Inputs
- # Title (if any)
- if (defined($cgi->param('query_title'))) {
- push @{search_inputs}, 'title_' . $cgi->param('query_title');
- }
+ # Parse parameters passed by Evergreen Advanced Search
+ if ($cgi->param('qtype')) {
+ #Evergreen Advanced Search:
+ @search_inputs = _parse_evergreen_advanced_search($cgi);
+ $logger->info("Parsed User Query: ".Dumper(@search_inputs));
+ $value_to_search = '';
+ } else {
+ #RBDigital Advanced Search:
+ # Build array with Search Inputs from RBDigital Advanced Search
+ # Title (if any)
+ if (defined($cgi->param('query_title'))) {
+ push @{search_inputs}, 'title_' . $cgi->param('query_title');
+ }
- # Author (if any)
- if (defined($cgi->param('query_author')) && $cgi->param('query_author') ne '') {
- push @{search_inputs}, 'author_' . $cgi->param('query_author');
- }
+ # Author (if any)
+ if (defined($cgi->param('query_author')) && $cgi->param('query_author') ne '') {
+ push @{search_inputs}, 'author_' . $cgi->param('query_author');
+ }
- # Narrator (if any)
- if (defined($cgi->param('query_narrator')) && $cgi->param('query_narrator') ne '') {
- push @{search_inputs}, 'narrator_' . $cgi->param('query_narrator');
- }
+ # Narrator (if any)
+ if (defined($cgi->param('query_narrator')) && $cgi->param('query_narrator') ne '') {
+ push @{search_inputs}, 'narrator_' . $cgi->param('query_narrator');
+ }
- # Series (if any)
- if (defined($cgi->param('query_series')) && $cgi->param('query_series') ne '') {
- push @{search_inputs}, 'series_' . $cgi->param('query_series');
- }
+ # Series (if any)
+ if (defined($cgi->param('query_series')) && $cgi->param('query_series') ne '') {
+ push @{search_inputs}, 'series_' . $cgi->param('query_series');
+ }
- # Publisher (if any)
- if (defined($cgi->param('query_publisher')) && $cgi->param('query_publisher') ne '') {
- push @{search_inputs}, 'publisher_' . $cgi->param('query_publisher');
- }
+ # Publisher (if any)
+ if (defined($cgi->param('query_publisher')) && $cgi->param('query_publisher') ne '') {
+ push @{search_inputs}, 'publisher_' . $cgi->param('query_publisher');
+ }
- # Genre (if any)
- if (defined($cgi->param('item_genre')) && $cgi->param('item_genre') ne '') {
- push @{search_inputs}, 'genre_' . $cgi->param('item_genre');
- }
+ # Genre (if any)
+ if (defined($cgi->param('item_genre')) && $cgi->param('item_genre') ne '') {
+ push @{search_inputs}, 'genre_' . $cgi->param('item_genre');
+ }
- # Audience (if any)
- if (defined($cgi->param('item_audience')) && $cgi->param('item_audience') ne '') {
- push @{search_inputs}, 'audience_' . $cgi->param('item_audience');
- }
+ # Audience (if any)
+ if (defined($cgi->param('item_audience')) && $cgi->param('item_audience') ne '') {
+ push @{search_inputs}, 'audience_' . $cgi->param('item_audience');
+ }
- # Availability (if any)
- if (defined($cgi->param('item_availability')) && $cgi->param('item_availability') ne '') {
- push @{search_inputs}, 'availability_' . $cgi->param('item_availability');
- }
+ # Availability (if any)
+ if (defined($cgi->param('item_availability')) && $cgi->param('item_availability') ne '') {
+ push @{search_inputs}, 'availability_' . $cgi->param('item_availability');
+ }
- # Published Date (if any)
- if (defined($cgi->param('item_published')) && $cgi->param('item_published') ne '') {
- push @{search_inputs}, 'published_' . $cgi->param('item_published');
- }
+ # Published Date (if any)
+ if (defined($cgi->param('item_published')) && $cgi->param('item_published') ne '') {
+ push @{search_inputs}, 'published_' . $cgi->param('item_published');
+ }
- # Date Added (if any)
- if (defined($cgi->param('item_date-added')) && $cgi->param('item_date-added') ne '') {
- push @{search_inputs}, 'date-added_' . $cgi->param('item_date-added');
- }
+ # Date Added (if any)
+ if (defined($cgi->param('item_date-added')) && $cgi->param('item_date-added') ne '') {
+ push @{search_inputs}, 'date-added_' . $cgi->param('item_date-added');
+ }
- # Fiction (if any)
- if (defined($cgi->param('item_isfiction')) && $cgi->param('item_isfiction') ne '') {
- push @{search_inputs}, 'isfiction_' . $cgi->param('item_isfiction');
- }
+ # Fiction (if any)
+ if (defined($cgi->param('item_isfiction')) && $cgi->param('item_isfiction') ne '') {
+ push @{search_inputs}, 'isfiction_' . $cgi->param('item_isfiction');
+ }
- # Language (if any)
- if (defined($cgi->param('item_language')) && $cgi->param('item_language') ne '') {
- push @{search_inputs}, 'language_' . $cgi->param('item_language');
- }
+ # Language (if any)
+ if (defined($cgi->param('item_language')) && $cgi->param('item_language') ne '') {
+ push @{search_inputs}, 'language_' . $cgi->param('item_language');
+ }
- # Digital Rights (if any)
- if (defined($cgi->param('item_hasdrm')) && $cgi->param('item_hasdrm') ne '') {
- push @{search_inputs}, 'hasdrm_' . $cgi->param('item_hasdrm');
+ # Digital Rights (if any)
+ if (defined($cgi->param('item_hasdrm')) && $cgi->param('item_hasdrm') ne '') {
+ push @{search_inputs}, 'hasdrm_' . $cgi->param('item_hasdrm');
+ }
}
# Determine sort by and sort order
return Apache2::Const::OK;
}
- #$self->timelog("Firing off the basic search from RBDigital library");
my $basic_search_req = $ebookapi_session->request($method,
$authtoken, $session_id,
$value_to_search, $search_type,
} elsif ($filter->{tokenLabel} eq 'language') {
push @{$facets->{language}}, [$filter];
}
- }
-
+ }
};
# return hash reference
return rtrim($return_value);
}
-
# Perl trim function to remove whitespace from the start and end of the string
-sub trim($)
-{
+sub trim($) {
my $string = shift;
$string =~ s/^\s+//;
$string =~ s/\s+$//;
return $string;
}
# Left trim function to remove leading whitespace
-sub ltrim($)
-{
+sub ltrim($) {
my $string = shift;
$string =~ s/^\s+//;
return $string;
}
# Right trim function to remove trailing whitespace
-sub rtrim($)
-{
+sub rtrim($) {
my $string = shift;
$string =~ s/\s+$//;
return $string;
{
#TODO: Replace the below by join statement
digital_services_id => $digital_services_req->content->[0]->id
-
}
);
return $mapped_search_field_req->recv()->{content};
-
}
return [];
}
+# Call this method to parse the Evergreen search structure generated by the Advanced Search
+sub _parse_evergreen_advanced_search {
+ my ($cgi) = @_;
+ my @search_inputs = ();
+
+ return $cgi->param('query') unless $cgi->param('qtype');
+
+ my %parts;
+ my @part_names = qw/qtype contains query bool/;
+ $parts{$_} = [ $cgi->param($_) ] for (@part_names);
+
+ for (my $i = 0; $i < scalar @{$parts{'qtype'}}; $i++) {
+ my ($qtype, $contains, $query, $bool) = map { $parts{$_}->[$i] } @part_names;
+
+ next unless $query =~ /\S/;
+
+ # Hack for journal title
+ if ($qtype eq 'jtitle') {
+ $qtype = 'title';
+ }
+
+ push @{search_inputs}, $qtype. '_' . $query;
+ }
+
+ return @search_inputs;
+
+}
+
1;