diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index 0886cb2265..ddf711f00a 100755
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -26,6 +26,7 @@ use MARC::File::USMARC;
#$XML::SAX::ParserPackage = "XML::LibXML::SAX";
use MARC::File::XML;
use ZOOM;
+use POSIX qw(strftime);
use C4::Koha;
use C4::Dates qw/format_date/;
@@ -1419,18 +1420,15 @@ sub GetPublisherNameFromIsbn($){
=cut
sub TransformKohaToMarc {
-
my ( $hash ) = @_;
- my $dbh = C4::Context->dbh;
- my $sth =
- $dbh->prepare(
+ my $sth = C4::Context->dbh->prepare(
"SELECT tagfield,tagsubfield FROM marc_subfield_structure WHERE frameworkcode=? AND kohafield=?"
);
my $record = MARC::Record->new();
+ SetMarcUnicodeFlag($record, C4::Context->preference("marcflavour"));
foreach (keys %{$hash}) {
- &TransformKohaToMarcOneField( $sth, $record, $_,
- $hash->{$_}, '' );
- }
+ &TransformKohaToMarcOneField( $sth, $record, $_, $hash->{$_}, '' );
+ }
return $record;
}
@@ -1592,7 +1590,6 @@ sub TransformHtmlToXml {
$xml .= "\n" if @$tags > 0;
if (C4::Context->preference('marcflavour') eq 'UNIMARC' and !$unimarc_and_100_exist) {
# warn "SETTING 100 for $auth_type";
- use POSIX qw(strftime);
my $string = strftime( "%Y%m%d", localtime(time) );
# set 50 to position 26 is biblios, 13 if authorities
my $pos=26;
diff --git a/C4/Charset.pm b/C4/Charset.pm
index 4b73ceb9f8..5ca40daf82 100644
--- a/C4/Charset.pm
+++ b/C4/Charset.pm
@@ -25,7 +25,7 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
BEGIN {
# set the version for version checking
- $VERSION = 3.00;
+ $VERSION = 3.01;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
@@ -228,7 +228,7 @@ any actual character conversion.
sub SetMarcUnicodeFlag {
my $marc_record = shift;
- my $marc_flavour = shift;
+ my $marc_flavour = shift; # || C4::Context->preference("marcflavour");
$marc_record->encoding('UTF-8');
if ($marc_flavour eq 'MARC21') {
@@ -241,6 +241,8 @@ sub SetMarcUnicodeFlag {
substr($sfa, 26, 4) = '5050';
$field->update('a' => $sfa);
}
+ } else {
+ warn "Unrecognized marcflavour: $marc_flavour";
}
}
diff --git a/acqui/addorder.pl b/acqui/addorder.pl
index a9b5f9cd48..58b48677e5 100755
--- a/acqui/addorder.pl
+++ b/acqui/addorder.pl
@@ -165,17 +165,12 @@ my $purchaseorder = $input->param('purchaseordernumber');
my $invoice = $input->param('invoice');
my $publishercode = $input->param('publishercode');
my $suggestionid = $input->param('suggestionid');
-my $user = $input->remote_user;
-
-#warn "CREATEBIBITEM = $input->param('createbibitem')";
-#warn Dumper $input->param('createbibitem');
-my $createbibitem = $input->param('createbibitem');
+my $biblionumber = $input->param('biblionumber');
# create, modify or delete biblio
# create if $quantity>=0 and $existing='no'
# modify if $quantity>=0 and $existing='yes'
# delete if $quantity has been set to 0 by the librarian
-my $biblionumber = $input->param('biblionumber');
my $bibitemnum;
if ( $quantity ne '0' ) {
#check to see if biblio exists
diff --git a/misc/maintenance/leader_fix.pl b/misc/maintenance/MARC21_utf8_flag_fix.pl
similarity index 88%
rename from misc/maintenance/leader_fix.pl
rename to misc/maintenance/MARC21_utf8_flag_fix.pl
index 06d36fcdd5..dcbecc1dc1 100755
--- a/misc/maintenance/leader_fix.pl
+++ b/misc/maintenance/MARC21_utf8_flag_fix.pl
@@ -72,7 +72,8 @@ if ($debug) {
$verbose++;
}
-my $marcflavour = C4::Context->preference('marcflavour');
+my $marcflavour = C4::Context->preference('marcflavour') or die "No marcflavour (MARC21 or UNIMARC) set in syspref";
+($marcflavour eq 'MARC21') or die "marcflavour must be MARC21, not $marcflavour";
my $all = C4::Context->dbh->prepare("SELECT COUNT(*) FROM biblioitems");
$all->execute;
@@ -100,8 +101,6 @@ $limit or $limit = $bad_recs->rows(); # limit becomes max if unspecified
$limit += $offset if $offset; # increase limit for offset
my $i = 0;
-$marcflavour or die "No marcflavour (MARC21 or UNIMARC) set in syspref";
-
MARC::File::XML->default_record_format($marcflavour) or die "FAILED MARC::File::XML->default_record_format($marcflavour)";
while ( my $row = $bad_recs->fetchrow_hashref() ) {
@@ -120,7 +119,7 @@ while ( my $row = $bad_recs->fetchrow_hashref() ) {
next;
}
if ($fix) {
- $record->encoding('UTF-8');
+ SetMarcUnicodeFlag($record, $marcflavour);
if (ModBiblioMarc($record, $row->{biblionumber})) {
printf "# %4d of %4d: biblionumber %s : %s\n", $i, $badcount, $row->{biblionumber}, $record->leader();
} else {
@@ -134,13 +133,13 @@ __END__
=head1 NAME
-leader_fix.pl - Repair missing leader position 9 value ("a" for MARC21 - UTF8).
+MARC21_utf8_flag_fix.pl - Repair missing leader position 9 value ("a" for MARC21 - UTF8).
=head1 SYNOPSIS
-leader_fix.pl [ -h | -m ] [ -v ] [ -d ] [ -s ] [ -l N ] [ -o N ] [ -f ]
+MARC21_utf8_flag_fix.pl [ -h | -m ] [ -v ] [ -d ] [ -s ] [ -l N ] [ -o N ] [ -f ]
- Help Options:
+ Help Optionsc
-h --help -? Brief help message
-m --man Full documentation, same as --help --verbose
--version Prints version info
@@ -188,25 +187,27 @@ presents a problem when records have been inserted with the leader/09 showing
blank for MARC8 encoding. This script is used to determine the extent of the
problem and to fix the affected leaders.
-Run leader_fix.pl the first time with no options, and assuming you agree that the leaders
+As the name suggests, this script is only useful for MARC21 and will die for marcflavour UNIMARC.
+
+Run MARC21_utf8_flag_fix.pl the first time with no options, and assuming you agree that the leaders
presented need fixing, run it again with B<--fix>.
=head1 USAGE EXAMPLES
-B
+B
In the most basic form, displays summary of biblioitems examined
and the leader from any found without /09 = a.
-B
+B
Fixes the same biblioitems, displaying summary and each leader before/after change.
-B
+B
Dumps MARCXML from the 16th, 17th and 18th bad records found.
-B
+B
Same thing as previous example in terse form.