Bug 31665: Set today date for date cataloguing plugin
[srvgit] / cataloguing / z3950_auth_search.pl
index e65b8aa..5b41320 100755 (executable)
@@ -20,29 +20,62 @@ use Modern::Perl;
 
 use CGI qw / -utf8 /;
 
-use C4::Auth;
-use C4::Output;
+use C4::Auth qw( get_template_and_user );
+use C4::Output qw( output_html_with_http_headers );
 use C4::Context;
-use C4::Breeding;
-use C4::Koha;
+use C4::Breeding qw( Z3950Search Z3950SearchAuth );
+use MARC::Record;
+use Koha::Authorities;
+use Koha::Authority::Types;
+use C4::AuthoritiesMarc qw( GetAuthority );
 
-my $input        = new CGI;
+my $input        = CGI->new;
 my $dbh          = C4::Context->dbh;
 my $error         = $input->param('error');
 my $authid  = $input->param('authid') || 0;
+
+my $record         = GetAuthority($authid);
+my $marc_flavour = C4::Context->preference('marcflavour');
+my $authfields_mapping = {
+    'authorpersonal'   => $marc_flavour eq 'MARC21' ? '100' : '200',
+    'authorcorp'       => $marc_flavour eq 'MARC21' ? '110' : '210',
+    'authormeetingcon' => $marc_flavour eq 'MARC21' ? '111' : '210',
+    'uniformtitle'     => $marc_flavour eq 'MARC21' ? '130' : '230',
+    'subject'          => $marc_flavour eq 'MARC21' ? '150' : '250',
+};
+
 my $nameany     = $input->param('nameany');
 my $authorany     = $input->param('authorany');
-my $authorcorp     = $input->param('authorcorp');
-my $authorpersonal     = $input->param('authorpersonal');
-my $authormeetingcon     = $input->param('authormeetingcon');
+my $authorcorp =
+    $record
+  ? $record->subfield( $authfields_mapping->{'authorcorp'}, 'a' )
+  : $input->param('authorcorp');
+my $authorpersonal =
+    $record
+  ? $record->subfield( $authfields_mapping->{'authorpersonal'}, 'a' )
+  : $input->param('authorpersonal');
+my $authormeetingcon =
+    $record
+  ? $record->subfield( $authfields_mapping->{'authormeetingcon'}, 'a' )
+  : $input->param('authormeetingcon');
+
 my $title         = $input->param('title');
-my $uniformtitle         = $input->param('uniformtitle');
-my $subject       = $input->param('subject');
+my $uniformtitle =
+    $record
+  ? $record->subfield( $authfields_mapping->{'uniformtitle'}, 'a' )
+  : $input->param('uniformtitle');
+my $subject =
+    $record
+  ? $record->subfield( $authfields_mapping->{'subject'}, 'a' )
+  : $input->param('subject');
+
 my $subjectsubdiv       = $input->param('subjectsubdiv');
 my $srchany       = $input->param('srchany');
 my $op            = $input->param('op')||'';
 my $page            = $input->param('current_page') || 1;
+my $index =$input->param('index');
 $page = $input->param('goto_page') if $input->param('changepage_goto');
+my $controlnumber    = $input->param('controlnumber');
 
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user({
         template_name   => "cataloguing/z3950_auth_search.tt",
@@ -63,15 +96,18 @@ $template->param(
     subjectsubdiv   => $subjectsubdiv,
     srchany      => $srchany,
     authid => $authid,
+    controlnumber => $controlnumber,
+    index => $index,
 );
 
 if ( $op ne "do_search" ) {
-    my $sth = $dbh->prepare("SELECT id,host,servername,checked FROM z3950servers WHERE recordtype = 'authority' ORDER BY rank, servername");
+    my $sth = $dbh->prepare("SELECT id,host,servername,checked FROM z3950servers WHERE recordtype = 'authority' ORDER BY `rank`, servername");
     $sth->execute();
     my $serverloop = $sth->fetchall_arrayref( {} );
     $template->param(
         serverloop   => $serverloop,
         opsearch     => "search",
+        index        => $index,
     );
     output_html_with_http_headers $input, $cookie, $template->output;
     exit;
@@ -86,7 +122,6 @@ if ( @id==0 ) {
 }
 
 my $pars= {
-        random => scalar $input->param('random') || rand(1000000000),
         page => $page,
         id => \@id,
         nameany => $nameany,
@@ -100,6 +135,7 @@ my $pars= {
         subjectsubdiv => $subjectsubdiv,
         srchany => $srchany,
         authid => $authid,
+        controlnumber => $controlnumber,
 };
 Z3950SearchAuth($pars, $template);
 output_html_with_http_headers $input, $cookie, $template->output;