Bug 12598: Add use Koha::Patron::debarments statement
[koha.git] / tools / batch_record_modification.pl
index beb2b4c..bfdb758 100755 (executable)
@@ -25,11 +25,13 @@ use List::MoreUtils qw( uniq );
 
 use C4::Auth qw( get_template_and_user );
 use C4::Output qw( output_html_with_http_headers );
-use C4::AuthoritiesMarc qw( BuildSummary GetAuthTypeCode ModAuthority );
+use C4::AuthoritiesMarc qw( BuildSummary ModAuthority );
 use C4::BackgroundJob;
 use C4::Biblio qw( GetMarcBiblio ModBiblio );
 use C4::MarcModificationTemplates qw( GetModificationTemplateActions GetModificationTemplates ModifyRecordWithTemplate );
-use Koha::Authority;
+
+use Koha::Biblios;
+use Koha::MetadataRecord::Authority;
 
 my $input = new CGI;
 our $dbh = C4::Context->dbh;
@@ -44,7 +46,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user({
         query => $input,
         type => "intranet",
         authnotrequired => 0,
-        flagsrequired => { tools => 'biblio_batchmod' },
+        flagsrequired => { tools => 'records_batchmod' },
 });
 
 
@@ -62,6 +64,7 @@ if ( $completedJobID ) {
         view => 'report',
     );
     output_html_with_http_headers $input, $cookie, $template->output;
+    $job->clear();
     exit;
 }
 
@@ -115,7 +118,7 @@ if ( $op eq 'form' ) {
     for my $record_id ( uniq @record_ids ) {
         if ( $recordtype eq 'biblio' ) {
             # Retrieve biblio information
-            my $biblio = C4::Biblio::GetBiblio( $record_id );
+            my $biblio = Koha::Biblios->find( $record_id );
             unless ( $biblio ) {
                 push @messages, {
                     type => 'warning',
@@ -127,7 +130,7 @@ if ( $op eq 'form' ) {
             push @records, $biblio;
         } else {
             # Retrieve authority information
-            my $authority = Koha::Authority->get_from_authid( $record_id );
+            my $authority = Koha::MetadataRecord::Authority->get_from_authid( $record_id );
             unless ( $authority ) {
                 push @messages, {
                     type => 'warning',
@@ -150,12 +153,12 @@ if ( $op eq 'form' ) {
     );
 } elsif ( $op eq 'modify' ) {
     # We want to modify selected records!
-    my @record_ids = $input->param('record_id');
+    my @record_ids = $input->multi_param('record_id');
 
     my ( $job );
     if ( $runinbackground ) {
         my $job_size = scalar( @record_ids );
-        $job = C4::BackgroundJob->new( $sessionID, "FIXME", $ENV{SCRIPT_NAME}, $job_size );
+        $job = C4::BackgroundJob->new( $sessionID, "FIXME", '/cgi-bin/koha/tools/batch_record_modification.pl', $job_size );
         my $job_id = $job->id;
         if (my $pid = fork) {
             $dbh->{InactiveDestroy}  = 1;
@@ -166,9 +169,8 @@ if ( $op eq 'form' ) {
             exit 0;
         } elsif (defined $pid) {
             close STDOUT;
-            close STDERR;
         } else {
-            warn "fork failed while attempting to run $ENV{'SCRIPT_NAME'} as a background job";
+            warn "fork failed while attempting to run tools/batch_record_modification.pl as a background job";
             exit 0;
         }
     }
@@ -189,9 +191,10 @@ if ( $op eq 'form' ) {
 
             # Finally, modify the biblio
             my $error = eval {
-                my $record = GetMarcBiblio( $biblionumber );
+                my $record = GetMarcBiblio({ biblionumber => $biblionumber });
                 ModifyRecordWithTemplate( $mmtid, $record );
-                ModBiblio( $record, $biblionumber );
+                my $frameworkcode = C4::Biblio::GetFrameworkCode( $biblionumber );
+                ModBiblio( $record, $biblionumber, $frameworkcode );
             };
             if ( $error and $error != 1 or $@ ) { # ModBiblio returns 1 if everything as gone well
                 push @messages, {
@@ -212,10 +215,10 @@ if ( $op eq 'form' ) {
             # Authorities
             my $authid = $record_id;
             my $error = eval {
-                my $authority = Koha::Authority->get_from_authid( $authid );
+                my $authority = Koha::MetadataRecord::Authority->get_from_authid( $authid );
                 my $record = $authority->record;
                 ModifyRecordWithTemplate( $mmtid, $record );
-                ModAuthority( $authid, $record, GetAuthTypeCode( $authid ) );
+                ModAuthority( $authid, $record, $authority->authtypecode );
             };
             if ( $error and $error != $authid or $@ ) {
                 push @messages, {