+if ( $op eq "do_search" ) {
+ my $marclist = $query->param('marclist') || '';
+ my $and_or = $query->param('and_or') || '';
+ my $excluding = $query->param('excluding') || '';
+ my $operator = $query->param('operator') || '';
+ my $orderby = $query->param('orderby') || '';
+ my $value = $query->param('value') || '';
+
+ my $startfrom = $query->param('startfrom') || 1;
+ my $resultsperpage = $query->param('resultsperpage') || 20;
+
+ my $builder = Koha::SearchEngine::QueryBuilder->new(
+ { index => $Koha::SearchEngine::AUTHORITIES_INDEX } );
+ my $searcher = Koha::SearchEngine::Search->new(
+ { index => $Koha::SearchEngine::AUTHORITIES_INDEX } );
+ my $search_query = $builder->build_authorities_query_compat(
+ [$marclist], [$and_or], [$excluding], [$operator],
+ [$value], $authtypecode, $orderby
+ );
+ my $offset = ( $startfrom - 1 ) * $resultsperpage + 1;
+ my ( $results, $total ) =
+ $searcher->search_auth_compat( $search_query, $offset,
+ $resultsperpage );
+ #my ( $results, $total ) = SearchAuthorities(
+ # [$marclist], [$and_or],
+ # [$excluding], [$operator],
+ # [$value], ( $startfrom - 1 ) * $resultsperpage,
+ # $resultsperpage, $authtypecode,
+ # $orderby
+ #);
+
+
+ ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+ {
+ template_name => "authorities/searchresultlist.tt",
+ query => $query,
+ type => 'intranet',
+ authnotrequired => 0,
+ flagsrequired => { catalogue => 1 },
+ debug => 1,
+ }
+ );
+
+ $template->param(
+ csrf_token => Koha::Token->new->generate_csrf({
+ session_id => scalar $query->cookie('CGISESSID'),
+ }),
+ );
+
+ # search history
+ if (C4::Context->preference('EnableSearchHistory')) {
+ if ( $startfrom == 1) {
+ my $path_info = $query->url(-path_info=>1);
+ my $query_cgi_history = $query->url(-query=>1);
+ $query_cgi_history =~ s/^$path_info\?//;
+ $query_cgi_history =~ s/;/&/g;
+
+ C4::Search::History::add({
+ userid => $loggedinuser,
+ sessionid => $query->cookie("CGISESSID"),
+ query_desc => $value,
+ query_cgi => $query_cgi_history,
+ total => $total,
+ type => "authority",
+ });
+ }
+ }
+
+ $template->param(
+ marclist => $marclist,
+ and_or => $and_or,
+ excluding => $excluding,
+ operator => $operator,
+ orderby => $orderby,
+ value => $value,
+ authtypecode => $authtypecode,
+ startfrom => $startfrom,
+ resultsperpage => $resultsperpage,
+ );
+
+ # we must get parameters once again. Because if there is a mainentry, it
+ # has been replaced by something else during the search, thus the links
+ # next/previous would not work anymore
+
+ # construction of the url of each page
+ my $value_url = uri_escape_utf8($value);
+ my $base_url = "authorities-home.pl?"
+ ."marclist=$marclist"
+ ."&and_or=$and_or"
+ ."&excluding=$excluding"
+ ."&operator=$operator"
+ ."&value=$value_url"
+ ."&resultsperpage=$resultsperpage"
+ ."&type=intranet"
+ ."&op=do_search"
+ ."&authtypecode=$authtypecode"
+ ."&orderby=$orderby";
+
+ my $from = ( $startfrom - 1 ) * $resultsperpage + 1;
+ my $to;
+ if ( !defined $total ) {
+ $total = 0;
+ }
+
+ if ( $total < $startfrom * $resultsperpage ) {
+ $to = $total;
+ }
+ else {
+ $to = $startfrom * $resultsperpage;
+ }
+
+ $template->param( result => $results ) if $results;
+
+ $template->param(
+ pagination_bar => pagination_bar(
+ $base_url, int( $total / $resultsperpage ) + 1,
+ $startfrom, 'startfrom'
+ ),
+ total => $total,
+ from => $from,
+ to => $to,
+ isEDITORS => $authtypecode eq 'EDITORS',
+ );