X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=authorities%2Fauth_finder.pl;h=818bb6d6fd14da53b34ae36f04623813b02b3c82;hb=0d177c9546ca697b49c73ea60fb7171ab220b279;hp=0a17d514399dab126199d7a89e1d698736f78d05;hpb=b767f50c8f4d9216db2be82ed8c0b92e170d1db0;p=koha.git diff --git a/authorities/auth_finder.pl b/authorities/auth_finder.pl index 0a17d51439..818bb6d6fd 100755 --- a/authorities/auth_finder.pl +++ b/authorities/auth_finder.pl @@ -14,153 +14,170 @@ # 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# 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. use strict; -require Exporter; -use CGI; -use C4::Interface::CGI::Output; -use C4::Auth; +use warnings; +use CGI qw ( -utf8 ); +use C4::Output; +use C4::Auth; use C4::Context; use C4::AuthoritiesMarc; use C4::Acquisition; -use C4::Koha; # XXX subfield_is_koha_internal_p - -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 $resultstring = $query->param('result'); -my $dbh = C4::Context->dbh; - -my $startfrom=$query->param('startfrom'); -$startfrom=0 if(!defined $startfrom); -my ($template, $loggedinuser, $cookie); -my $resultsperpage; - -my $authtypes = getauthtypes; +use C4::Koha; + +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 $source = $query->param('source') || ''; +my $relationship = $query->param('relationship') || ''; + +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => ( $op eq 'do_search' ) + ? 'authorities/searchresultlist-auth.tt' + : 'authorities/auth_finder.tt', + query => $query, + type => 'intranet', + authnotrequired => 0, + flagsrequired => { catalogue => 1 }, + } +); + +# Authority types loop +my $authtypes = C4::Koha::getauthtypes(); my @authtypesloop; -foreach my $thisauthtype (keys %$authtypes) { - my $selected = 1 if $thisauthtype eq $authtypecode; - my %row =(value => $thisauthtype, - selected => $selected, - authtypetext => $authtypes->{$thisauthtype}{'authtypetext'}, - index => $index, - ); +foreach my $thisauthtype ( keys %$authtypes ) { + my %row = ( + value => $thisauthtype, + selected => ( $thisauthtype eq $authtypecode ), + 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 search form posted +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], - ); -} 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, - ); + my @operator = $query->param('operator'); + my @value = ( + $query->param('value_mainstr') || undef, + $query->param('value_main') || undef, + $query->param('value_any') || undef, + $query->param('value_match') || undef + ); + my $orderby = $query->param('orderby') || ''; + my $startfrom = $query->param('startfrom') || 0; + my $resultsperpage = $query->param('resultsperpage') || 20; + + 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 = (); + +# get marclist again, as the previous one has been modified by catalogsearch (mainentry replaced by field name) + my @marclist_ini = $query->param('marclist'); + 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') || "" }; + push @field_data, + { term => "value_match", val => $query->param('value_match') || "" }; + + 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->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, + operator_mainstr => ( @operator > 0 && $operator[0] ) + ? $operator[0] + : '', + operator_main => ( @operator > 1 && $operator[1] ) ? $operator[1] : '', + operator_any => ( @operator > 2 && $operator[2] ) ? $operator[2] : '', + operator_match => ( @operator > 3 && $operator[3] ) ? $operator[3] : '', + ); +} +else { + + # special case for UNIMARC field 210c builder + my $resultstring = $query->param('result') || ''; + $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( + op => $op, + value_mainstr => $query->param('value_mainstr') || '', + value_main => $query->param('value_main') || '', + value_any => $query->param('value_any') || '', + value_match => $query->param('value_match') || '', + tagid => $tagid, + index => $index, + authtypesloop => \@authtypesloop, + authtypecode => $authtypecode, + source => $source, + relationship => $relationship, +); # Print the page output_html_with_http_headers $query, $cookie, $template->output;