X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=authorities%2Fauth_finder.pl;h=18d84b6d19aa288a83c2c7df67e44394a8eef8de;hb=fe3621812e80eef0e1c8eb3a47ae639990fd0f6d;hp=b6b526b3849b8df972cc68494af83bd03b9f0bb8;hpb=100e6a9808ead4ee8d951da59ead1550e75bb4c3;p=koha.git diff --git a/authorities/auth_finder.pl b/authorities/auth_finder.pl index b6b526b384..18d84b6d19 100755 --- a/authorities/auth_finder.pl +++ b/authorities/auth_finder.pl @@ -19,148 +19,163 @@ # Suite 330, Boston, MA 02111-1307 USA use strict; -require Exporter; + use CGI; use C4::Output; use C4::Auth; - use C4::Context; use C4::AuthoritiesMarc; use C4::Acquisition; -use C4::Koha; # XXX subfield_is_koha_internal_p +use C4::Koha; # XXX subfield_is_koha_internal_p -my $query=new CGI; -my $op = $query->param('op'); +my $query = new CGI; +my $op = $query->param('op'); my $authtypecode = $query->param('authtypecode'); -my $index = $query->param('index'); -my $tagid=$query->param('tagid'); +my $index = $query->param('index'); +my $tagid = $query->param('tagid'); my $resultstring = $query->param('result'); -my $dbh = C4::Context->dbh; +my $dbh = C4::Context->dbh; -my $startfrom=$query->param('startfrom'); -$startfrom=0 if(!defined $startfrom); -my ($template, $loggedinuser, $cookie); +my $startfrom = $query->param('startfrom'); +$startfrom = 0 if ( !defined $startfrom ); +my ( $template, $loggedinuser, $cookie ); my $resultsperpage; my $authtypes = getauthtypes; my @authtypesloop; -foreach my $thisauthtype (keys %$authtypes) { +foreach my $thisauthtype ( keys %$authtypes ) { my $selected = 1 if $thisauthtype eq $authtypecode; - my %row =(value => $thisauthtype, - selected => $selected, - authtypetext => $authtypes->{$thisauthtype}{'authtypetext'}, - index => $index, - ); + my %row = ( + value => $thisauthtype, + selected => $selected, + authtypetext => $authtypes->{$thisauthtype}{'authtypetext'}, + index => $index, + ); push @authtypesloop, \%row; } -if ($op eq "do_search") { - my @marclist = $query->param('marclist'); - my @and_or = $query->param('and_or'); +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 @value = $query->param('value'); - - $resultsperpage= $query->param('resultsperpage'); - $resultsperpage = 19 if(!defined $resultsperpage); - - my ($results,$total) = SearchAuthorities(\@marclist,\@and_or, - \@excluding, \@operator, \@value, - $startfrom*$resultsperpage, $resultsperpage,$authtypecode);# $orderby); - - # multi page display gestion - my $displaynext=0; - my $displayprev=$startfrom; - if(($total - (($startfrom+1)*($resultsperpage))) > 0 ) { - $displaynext = 1; - } - - my @field_data = (); - - - my @marclist_ini = $query->param('marclist'); # get marclist again, as the previous one has been modified by catalogsearch (mainentry replaced by field name - for(my $i = 0 ; $i <= $#marclist ; $i++) { - push @field_data, { term => "marclist", val=>$marclist_ini[$i] }; - push @field_data, { term => "and_or", val=>$and_or[$i] }; - push @field_data, { term => "excluding", val=>$excluding[$i] }; - push @field_data, { term => "operator", val=>$operator[$i] }; - push @field_data, { term => "value", val=>$value[$i] }; - } - - my @numbers = (); - - if ($total>$resultsperpage) { - for (my $i=1; $i<$total/$resultsperpage+1; $i++) { - if ($i<16) { - my $highlight=0; - ($startfrom==($i-1)) && ($highlight=1); - push @numbers, { number => $i, - highlight => $highlight , - searchdata=> \@field_data, - startfrom => ($i-1)}; - } - } - } - - my $from = $startfrom*$resultsperpage+1; - my $to; - - if($total < (($startfrom+1)*$resultsperpage)) { - $to = $total; - } else { - $to = (($startfrom+1)*$resultsperpage); - } - ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "authorities/searchresultlist-auth.tmpl", - query => $query, - type => 'intranet', - authnotrequired => 0, - flagsrequired => {catalogue => 1}, - debug => 1, - }); - - $template->param(result => $results) if $results; - $template->param(index => $query->param('index').""); - $template->param(startfrom=> $startfrom, - displaynext=> $displaynext, - displayprev=> $displayprev, - resultsperpage => $resultsperpage, - startfromnext => $startfrom+1, - startfromprev => $startfrom-1, - index => $index, - tagid => $tagid, - searchdata=>\@field_data, - total=>$total, - from=>$from, - to=>$to, - numbers=>\@numbers, - authtypecode =>$authtypecode, - mainmainstring =>$value[0], - mainstring =>$value[1], - anystring =>$value[2], - ); + my @operator = $query->param('operator'); + my @value = ($query->param('value_mainstr')||undef, $query->param('value_main')||undef, $query->param('value_any')||undef); + my $orderby = $query->param('orderby'); + + $resultsperpage = $query->param('resultsperpage'); + $resultsperpage = 20 if ( !defined $resultsperpage ); + + my ( $results, $total ) = + SearchAuthorities( \@marclist, \@and_or, \@excluding, \@operator, \@value, + $startfrom * $resultsperpage, + $resultsperpage, $authtypecode, $orderby); + # multi page display gestion + my $displaynext = 0; + my $displayprev = $startfrom; + if ( ( $total - ( ( $startfrom + 1 ) * ($resultsperpage) ) ) > 0 ) { + $displaynext = 1; + } + + my @field_data = (); + + my @marclist_ini = + $query->param('marclist') + ; # get marclist again, as the previous one has been modified by catalogsearch (mainentry replaced by field name + for ( my $i = 0 ; $i <= $#marclist ; $i++ ) { + push @field_data, { term => "marclist", val => $marclist_ini[$i] }; + push @field_data, { term => "and_or", val => $and_or[$i] }; + push @field_data, { term => "excluding", val => $excluding[$i] }; + push @field_data, { term => "operator", val => $operator[$i] }; + } + + push @field_data, { term => "value_mainstr", val => $query->param('value_mainstr') || "" }; + push @field_data, { term => "value_main", val => $query->param('value_main') || "" }; + push @field_data, { term => "value_any", val => $query->param('value_any') || ""}; + + my @numbers = (); + + if ( $total > $resultsperpage ) { + for ( my $i = 1 ; $i < $total / $resultsperpage + 1 ; $i++ ) { + if ( $i < 16 ) { + my $highlight = 0; + ( $startfrom == ( $i - 1 ) ) && ( $highlight = 1 ); + push @numbers, + { + number => $i, + highlight => $highlight, + searchdata => \@field_data, + startfrom => ( $i - 1 ) + }; + } + } + } + + my $from = $startfrom * $resultsperpage + 1; + my $to; + + if ( $total < ( ( $startfrom + 1 ) * $resultsperpage ) ) { + $to = $total; + } + else { + $to = ( ( $startfrom + 1 ) * $resultsperpage ); + } + ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "authorities/searchresultlist-auth.tmpl", + query => $query, + type => 'intranet', + authnotrequired => 0, + flagsrequired => { catalogue => 1 }, + } + ); + + $template->param( result => $results ) if $results; + $template->param( + orderby => $orderby, + startfrom => $startfrom, + displaynext => $displaynext, + displayprev => $displayprev, + resultsperpage => $resultsperpage, + startfromnext => $startfrom + 1, + startfromprev => $startfrom - 1, + searchdata => \@field_data, + total => $total, + from => $from, + to => $to, + numbers => \@numbers, + authtypecode => $authtypecode, + value_mainstr => $query->param('value_mainstr') || "", + value_main => $query->param('value_main') || "", + value_any => $query->param('value_any') || "", + ); } else { - ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "authorities/auth_finder.tmpl", - query => $query, - type => 'intranet', - authnotrequired => 0, - flagsrequired => {catalogue => 1}, - debug => 1, - }); - - $template->param(index=>$query->param('index')."", - tagid => $tagid, - resultstring => $resultstring, - ); + ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "authorities/auth_finder.tmpl", + query => $query, + type => 'intranet', + authnotrequired => 0, + flagsrequired => { catalogue => 1 }, + } + ); + + $template->param( + resultstring => $resultstring, + ); } -$template->param(authtypesloop => \@authtypesloop, - authtypecode => $authtypecode, - intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), - intranetstylesheet => C4::Context->preference("intranetstylesheet"), - IntranetNav => C4::Context->preference("IntranetNav"), - ); +$template->param( + value_mainstr => $query->param('value_mainstr') || "", + value_main => $query->param('value_main') || "", + value_any => $query->param('value_any') || "", + tagid => $tagid, + index => $index, + authtypesloop => \@authtypesloop, + authtypecode => $authtypecode, + value_mainstr => $query->param('value_mainstr') || "", + value_main => $query->param('value_main') || "", + value_any => $query->param('value_any') || "", +); # Print the page output_html_with_http_headers $query, $cookie, $template->output;