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;
+use Koha::Virtualshelves;
my $input = new CGI;
our $dbh = C4::Context->dbh;
query => $input,
type => "intranet",
authnotrequired => 0,
- flagsrequired => { tools => 'biblio_batchmod' },
+ flagsrequired => { tools => 'records_batchmod' },
});
view => 'report',
);
output_html_with_http_headers $input, $cookie, $template->output;
+ $job->clear();
exit;
}
+$template->param( lists => scalar Koha::Virtualshelves->search([{ category => 1, owner => $loggedinuser }, { category => 2 }]) );
+
my @templates = GetModificationTemplates( $mmtid );
unless ( @templates ) {
$op = 'error';
errors => ['no_template_defined'],
);
output_html_with_http_headers $input, $cookie, $template->output;
+ exit;
}
if ( $mmtid ) {
$recordtype = 'biblio';
} elsif ( my $uploadfile = $input->param('uploadfile') ) {
# A file of id is given
+ binmode $uploadfile, ':encoding(UTF-8)';
while ( my $content = <$uploadfile> ) {
next unless $content;
$content =~ s/[\r\n]*$//;
push @record_ids, $content if $content;
}
+ } elsif ( my $shelf_number = $input->param('shelf_number') ) {
+ my $shelf = Koha::Virtualshelves->find($shelf_number);
+ my $contents = $shelf->get_contents;
+ while ( my $content = $contents->next ) {
+ my $biblionumber = $content->biblionumber;
+ push @record_ids, $biblionumber;
+ }
} else {
# The user enters manually the list of id
push @record_ids, split( /\s\n/, $input->param('recordnumber_list') );
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',
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',
);
} 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;
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;
}
}
# 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, {
# 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, {