X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=authorities%2Fauthorities-home.pl;h=426b1bace3ea5393e8f433e335069cd390062221;hb=090c0fc6c49e448b1ee506808e5f157c4ba88414;hp=f67f5c9c40e17f68e36ab6f9353c15ffd9c1ddda;hpb=81ee945a580189e79a268f60d9e7638e92e85f26;p=koha.git diff --git a/authorities/authorities-home.pl b/authorities/authorities-home.pl index f67f5c9c40..426b1bace3 100755 --- a/authorities/authorities-home.pl +++ b/authorities/authorities-home.pl @@ -4,23 +4,23 @@ # # 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 . use strict; use warnings; -use CGI; +use CGI qw ( -utf8 ); use URI::Escape; use C4::Auth; @@ -29,8 +29,13 @@ use C4::Auth; use C4::Output; use C4::AuthoritiesMarc; use C4::Acquisition; -use C4::Koha; # XXX subfield_is_koha_internal_p +use C4::Koha; use C4::Biblio; +use C4::Search::History; + +use Koha::Authority::Types; +use Koha::SearchEngine::Search; +use Koha::SearchEngine::QueryBuilder; my $query = new CGI; my $dbh = C4::Context->dbh; @@ -40,27 +45,12 @@ my $authid = $query->param('authid') || ''; my ( $template, $loggedinuser, $cookie ); -my $authtypes = getauthtypes; -my @authtypesloop; -foreach my $thisauthtype ( - sort { - $authtypes->{$a}{'authtypetext'} cmp $authtypes->{$b}{'authtypetext'} - } - keys %$authtypes - ) -{ - my %row = ( - value => $thisauthtype, - selected => $thisauthtype eq $authtypecode, - authtypetext => $authtypes->{$thisauthtype}{'authtypetext'}, - ); - push @authtypesloop, \%row; -} +my $authority_types = Koha::Authority::Types->search( {}, { order_by => ['authtypetext'] } ); if ( $op eq "delete" ) { ( $template, $loggedinuser, $cookie ) = get_template_and_user( { - template_name => "authorities/authorities-home.tmpl", + template_name => "authorities/authorities-home.tt", query => $query, type => 'intranet', authnotrequired => 0, @@ -89,17 +79,30 @@ if ( $op eq "do_search" ) { my $startfrom = $query->param('startfrom') || 1; my $resultsperpage = $query->param('resultsperpage') || 20; - my ( $results, $total ) = SearchAuthorities( - [$marclist], [$and_or], - [$excluding], [$operator], - [$value], ( $startfrom - 1 ) * $resultsperpage, - $resultsperpage, $authtypecode, - $orderby + 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 ); + $startfrom = $startfrom // 0; + my ( $results, $total ) = + $searcher->search_auth_compat( $search_query, $startfrom, + $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.tmpl", + template_name => "authorities/searchresultlist.tt", query => $query, type => 'intranet', authnotrequired => 0, @@ -108,6 +111,25 @@ if ( $op eq "do_search" ) { } ); + # 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, @@ -125,7 +147,7 @@ if ( $op eq "do_search" ) { # next/previous would not work anymore # construction of the url of each page - my $value_url = uri_escape($value); + my $value_url = uri_escape_utf8($value); my $base_url = "authorities-home.pl?" ."marclist=$marclist" ."&and_or=$and_or" @@ -168,7 +190,7 @@ if ( $op eq "do_search" ) { if ( $op eq '' ) { ( $template, $loggedinuser, $cookie ) = get_template_and_user( { - template_name => "authorities/authorities-home.tmpl", + template_name => "authorities/authorities-home.tt", query => $query, type => 'intranet', authnotrequired => 0, @@ -180,7 +202,7 @@ if ( $op eq '' ) { } $template->param( - authtypesloop => \@authtypesloop, + authority_types => $authority_types, op => $op, );