From d5f740fb0bc51a4f313221132188bb632772feb2 Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Fri, 19 Aug 2016 14:36:23 +0100
Subject: [PATCH] Bug 17048: Fix pagination offset for authority searches

At the intranet, the pagination has been broken by bug 12478 (Elastic
Search). There was a confusion between the offset and the page number.

At the OPAC, it is broken since bug 2735 which has mimicked the intranet
script.

Test plan:
Search for a term which will return more than 1 page of results.
Click on the second page
=> Without this patch, the first result of the second page is the second
result of the first page
=> With this patch applied, the offset will be corrected
---
 authorities/authorities-home.pl | 4 ++--
 opac/opac-authorities-home.pl   | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/authorities/authorities-home.pl b/authorities/authorities-home.pl
index 426b1ba..6e0a8fe8 100755
--- a/authorities/authorities-home.pl
+++ b/authorities/authorities-home.pl
@@ -87,9 +87,9 @@ if ( $op eq "do_search" ) {
         [$marclist], [$and_or], [$excluding], [$operator],
         [$value], $authtypecode, $orderby
     );
-    $startfrom = $startfrom // 0;
+    my $offset = ( $startfrom - 1 ) * $resultsperpage + 1;
     my ( $results, $total ) =
-      $searcher->search_auth_compat( $search_query, $startfrom,
+      $searcher->search_auth_compat( $search_query, $offset,
         $resultsperpage );
     #my ( $results, $total ) = SearchAuthorities(
     #    [$marclist],  [$and_or],
diff --git a/opac/opac-authorities-home.pl b/opac/opac-authorities-home.pl
index 5b1a42b..d92166b 100755
--- a/opac/opac-authorities-home.pl
+++ b/opac/opac-authorities-home.pl
@@ -64,8 +64,9 @@ if ( $op eq "do_search" ) {
         { 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, $startfrom, $resultsperpage );
+      $searcher->search_auth_compat( $search_query, $offset, $resultsperpage );
     ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         {
             template_name   => "opac-authoritiessearchresultlist.tt",
-- 
2.8.1