Bug 26265: (QA follow-up) Remove g option from regex, add few dirs
[koha-equinox.git] / serials / subscription-bib-search.pl
index 089b31b..743fe51 100755 (executable)
@@ -6,18 +6,18 @@
 #
 # This file is part of Koha.
 #
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
 #
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along
-# with Koha; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 =head1 NAME
 
@@ -46,10 +46,9 @@ to multipage gestion.
 
 =cut
 
-use strict;
-use warnings;
+use Modern::Perl;
 
-use CGI;
+use CGI qw ( -utf8 );
 use C4::Koha;
 use C4::Auth;
 use C4::Context;
@@ -58,6 +57,10 @@ use C4::Search;
 use C4::Biblio;
 use C4::Debug;
 
+use Koha::ItemTypes;
+use Koha::SearchEngine;
+use Koha::SearchEngine::Search;
+
 my $input = new CGI;
 my $op = $input->param('op') || q{};
 my $dbh = C4::Context->dbh;
@@ -77,7 +80,7 @@ if ( $op eq "do_search" && $query ) {
 
     ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         {
-            template_name   => "serials/result.tmpl",
+            template_name   => "serials/result.tt",
             query           => $input,
             type            => "intranet",
             authnotrequired => 0,
@@ -89,15 +92,16 @@ if ( $op eq "do_search" && $query ) {
     # add the limits if applicable
     my $itemtypelimit = $input->param('itemtypelimit');
     my $ccodelimit    = $input->param('ccodelimit');
-    my $op = C4::Context->preference('UseQueryParser') ? '&&' : 'and';
+    my $op = 'and';
     $query .= " $op $itype_or_itemtype:$itemtypelimit" if $itemtypelimit;
     $query .= " $op ccode:$ccodelimit" if $ccodelimit;
     $debug && warn $query;
     $resultsperpage = $input->param('resultsperpage');
     $resultsperpage = 20 if ( !defined $resultsperpage );
 
+    my $searcher = Koha::SearchEngine::Search->new({index => $Koha::SearchEngine::BIBLIOS_INDEX});
     my ( $error, $marcrecords, $total_hits ) =
-      SimpleSearch( $query, $startfrom * $resultsperpage, $resultsperpage );
+      $searcher->simple_search_compat( $query, $startfrom * $resultsperpage, $resultsperpage );
     my $total = 0;
     if ( defined $marcrecords ) {
         $total = scalar @{$marcrecords};
@@ -114,16 +118,19 @@ if ( $op eq "do_search" && $query ) {
     for ( my $i = 0 ; $i < $total ; $i++ ) {
         my %resultsloop;
         my $marcrecord = C4::Search::new_record_from_zebra( 'biblioserver', $marcrecords->[$i] );
-        my $biblio = TransformMarcToKoha( C4::Context->dbh, $marcrecord, '' );
+        my $biblio = TransformMarcToKoha( $marcrecord, '' );
 
         #build the hash for the template.
         $resultsloop{highlight}       = ( $i % 2 ) ? (1) : (0);
         $resultsloop{title}           = $biblio->{'title'};
         $resultsloop{subtitle}        = $biblio->{'subtitle'};
+        $resultsloop{medium}          = $biblio->{'medium'};
+        $resultsloop{part_number}     = $biblio->{'part_number'};
+        $resultsloop{part_name}       = $biblio->{'part_name'};
         $resultsloop{biblionumber}    = $biblio->{'biblionumber'};
         $resultsloop{author}          = $biblio->{'author'};
         $resultsloop{publishercode}   = $biblio->{'publishercode'};
-        $resultsloop{publicationyear} = $biblio->{'publicationyear'};
+        $resultsloop{publicationyear} = $biblio->{'publicationyear'} ? $biblio->{'publicationyear'} : $biblio->{'copyrightdate'};
         $resultsloop{issn}            = $biblio->{'issn'};
 
         push @results, \%resultsloop;
@@ -182,7 +189,7 @@ if ( $op eq "do_search" && $query ) {
 else {
     ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         {
-            template_name   => "serials/subscription-bib-search.tmpl",
+            template_name   => "serials/subscription-bib-search.tt",
             query           => $input,
             type            => "intranet",
             authnotrequired => 0,
@@ -192,8 +199,10 @@ else {
     );
 
     # load the itemtypes
-    my $itemtypes = GetItemTypes();
+    my $itemtypes = { map { $_->{itemtype} => $_ } @{ Koha::ItemTypes->search_with_localization->unblessed } };
     my @itemtypesloop;
+    # FIXME This is uselessly complex, the iterator should be send to the template
+    # FIXME The translated_description should be used
     foreach my $thisitemtype (
         sort {
             $itemtypes->{$a}->{'description'}