X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=authorities%2Fauthorities-home.pl;h=d9c5ac83bb4e2213e04c9a72e4c5c77c16ea6849;hb=f7b11f38e8c779685662be9dbd43e5eb30339e4d;hp=6e13db6229675c9022035821d024f2d2d182fbdb;hpb=a6c9bd0eb55c32d5632625144775271f20aa15f7;p=koha.git diff --git a/authorities/authorities-home.pl b/authorities/authorities-home.pl index 6e13db6229..d9c5ac83bb 100755 --- a/authorities/authorities-home.pl +++ b/authorities/authorities-home.pl @@ -29,10 +29,15 @@ 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; +use Koha::Token; + my $query = new CGI; my $dbh = C4::Context->dbh; my $op = $query->param('op') || ''; @@ -41,22 +46,7 @@ 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( @@ -69,7 +59,13 @@ if ( $op eq "delete" ) { debug => 1, } ); - &DelAuthority( $authid, 1 ); + + die "Wrong CSRF token" unless Koha::Token->new->check_csrf({ + session_id => scalar $query->cookie('CGISESSID'), + token => scalar $query->param('csrf_token'), + }); + + DelAuthority({ authid => $authid }); if ( $query->param('operator') ) { # query contains search params so perform search @@ -90,13 +86,25 @@ 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 ); + 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( @@ -110,6 +118,12 @@ if ( $op eq "do_search" ) { } ); + $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) { @@ -201,7 +215,7 @@ if ( $op eq '' ) { } $template->param( - authtypesloop => \@authtypesloop, + authority_types => $authority_types, op => $op, );