X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=authorities%2Fmerge.pl;h=0799c26b0420c02434c4966eccc9f3de2e80f2c1;hb=d8721bbc3687b13cd95abdcb73b3b7f9576e8190;hp=b6a7b279c7d4aec58dc51176691a6df41eb70a83;hpb=87773a6d661f122a52b34f6c67255424c335e297;p=srvgit diff --git a/authorities/merge.pl b/authorities/merge.pl index b6a7b279c7..0799c26b04 100755 --- a/authorities/merge.pl +++ b/authorities/merge.pl @@ -4,33 +4,31 @@ # # This file is part of Koha. # -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 3 of the License, or (at your option) any later -# version. +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY 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., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . -use strict; -use warnings; +use Modern::Perl; use CGI qw ( -utf8 ); -use C4::Output; -use C4::Auth; -use C4::AuthoritiesMarc; -use C4::Koha; -use C4::Biblio; +use C4::Output qw( output_html_with_http_headers ); +use C4::Auth qw( get_template_and_user ); +use C4::AuthoritiesMarc qw( GetAuthority ModAuthority DelAuthority GetTagsLabels merge ); +use C4::Biblio qw( TransformHtmlToMarc ); +use Koha::Authority::MergeRequests; use Koha::Authority::Types; -use Koha::Exceptions; use Koha::MetadataRecord::Authority; -my $input = new CGI; +my $input = CGI->new; my @authid = $input->multi_param('authid'); my $merge = $input->param('merge'); @@ -41,7 +39,6 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( template_name => "authorities/merge.tt", query => $input, type => "intranet", - authnotrequired => 0, flagsrequired => { editauthorities => 1 }, } ); @@ -84,8 +81,7 @@ if ($merge) { my $MARCfrom = GetAuthority( $recordid2 ); merge({ mergefrom => $recordid2, MARCfrom => $MARCfrom, mergeto => $recordid1, MARCto => $record }); - # Delete the other record. Do not merge. It is unneeded and could under - # special circumstances have unwanted side-effects. + # Delete the other record. No need to merge. DelAuthority({ authid => $recordid2, skip_merge => 1 }); # Parameters @@ -108,7 +104,10 @@ else { push @errors, { code => 'DESTRUCTIVE_MERGE' }; } else { my $recordObj1 = Koha::MetadataRecord::Authority->get_from_authid($authid[0]); - Koha::Exceptions::ObjectNotFound->throw( "No authority record found for authid $authid[0]\n" ) if !$recordObj1; + if (!$recordObj1) { + push @errors, { code => "MISSING_RECORD", value => $authid[0] }; + } + my $recordObj2; if (defined $mergereference && $mergereference eq 'breeding') { @@ -116,9 +115,19 @@ else { } else { $recordObj2 = Koha::MetadataRecord::Authority->get_from_authid($authid[1]); } - Koha::Exceptions::ObjectNotFound->throw( "No authority record found for authid $authid[1]\n" ) if !$recordObj2; + if (!$recordObj2) { + push @errors, { code => "MISSING_RECORD", value => $authid[1] }; + } + + unless ( $recordObj1 && $recordObj2 ) { + if (@errors) { + $template->param( errors => \@errors ); + } + output_html_with_http_headers $input, $cookie, $template->output; + exit; + } - if ($mergereference) { + if ($mergereference ) { my $framework; if ( $recordObj1->authtypecode ne $recordObj2->authtypecode && $mergereference ne 'breeding' ) { @@ -184,7 +193,7 @@ else { title2 => $recordObj2->authorized_heading, ); if ( $recordObj1->authtypecode ne $recordObj2->authtypecode ) { - my $authority_types = Koha::Authority::Types->search( { authtypecode => { '!=' => '' } }, { order_by => ['authtypecode'] } ); + my $authority_types = Koha::Authority::Types->search( { authtypecode => { '!=' => '' } }, { order_by => ['authtypetext'] } ); $template->param( frameworkselect => $authority_types->unblessed, frameworkcode1 => $recordObj1->authtypecode,