[Koha-patches] [PATCH] BUG 8347 - Koha forces UNIMARC 100 field code language to 'fre'

Vitor FERNANDES vitorfernandes87 at gmail.com
Thu Nov 29 12:06:00 CET 2012


Added a new system preference to set the UNIMARC field 100 default language.
The default value for that system preference is 'fre'.
Changed Biblio.pm to use the system preference:

- if the language is bad filled in the preferences it uses 'fre' as default value
- only replaces the language when the field 100 is empty
- if the language is filled with the plugin only replaces the positions 25-28 to 'y50'
---
 C4/Biblio.pm                                   |    5 ++++-
 cataloguing/value_builder/unimarc_field_100.pl |    5 ++++-
 installer/data/mysql/sysprefs.sql              |    1 +
 installer/data/mysql/updatedatabase.pl         |    7 +++++++
 4 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index 832da69..602a560 100644
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -3579,6 +3579,8 @@ sub ModBiblioMarc {
 
     # deal with UNIMARC field 100 (encoding) : create it if needed & set encoding to unicode
     if ( $encoding eq "UNIMARC" ) {
+	my $defaultlanguage = C4::Context->preference("UNIMARCField100Language");
+        $defaultlanguage = "fre" if (!$defaultlanguage || length($defaultlanguage) != 3);
         my $string = $record->subfield( 100, "a" );
         if ( ($string) && ( length( $record->subfield( 100, "a" ) ) == 36 ) ) {
             my $f100 = $record->field(100);
@@ -3587,8 +3589,9 @@ sub ModBiblioMarc {
             $string = POSIX::strftime( "%Y%m%d", localtime );
             $string =~ s/\-//g;
             $string = sprintf( "%-*s", 35, $string );
+	    substr ( $string, 22, 3, $defaultlanguage);
         }
-        substr( $string, 22, 6, "frey50" );
+        substr( $string, 25, 3, "y50" );
         unless ( $record->subfield( 100, "a" ) ) {
             $record->insert_fields_ordered( MARC::Field->new( 100, "", "", "a" => $string ) );
         }
diff --git a/cataloguing/value_builder/unimarc_field_100.pl b/cataloguing/value_builder/unimarc_field_100.pl
index 0d01554..0ecf844 100755
--- a/cataloguing/value_builder/unimarc_field_100.pl
+++ b/cataloguing/value_builder/unimarc_field_100.pl
@@ -82,6 +82,9 @@ sub plugin {
 
     my $dbh = C4::Context->dbh;
 
+    my $defaultlanguage = C4::Context->preference("UNIMARCField100Language");
+    $defaultlanguage = "fre" if (!$defaultlanguage || length($defaultlanguage) != 3);
+
     my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         {
             template_name => "cataloguing/value_builder/unimarc_field_100.tmpl",
@@ -92,7 +95,7 @@ sub plugin {
             debug           => 1,
         }
     );
-    $result = '        d        u  y0frey50      ba' unless $result;
+    $result = "        d        u  y0".$defaultlanguage."y50      ba" unless $result;
     my $f1 = substr( $result, 0, 8 );
     if ( $f1 eq '        ' ) {
         my @today = Date::Calc::Today();
diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql
index 44f9eb3..ddd162c 100644
--- a/installer/data/mysql/sysprefs.sql
+++ b/installer/data/mysql/sysprefs.sql
@@ -387,3 +387,4 @@ INSERT INTO systempreferences (variable,value,explanation,type) VALUES('INTRAdid
 INSERT INTO systempreferences (variable, value, options, explanation, type) VALUES ('BlockReturnOfWithdrawnItems', '1', '0', 'If enabled, items that are marked as withdrawn cannot be returned.', 'YesNo');
 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('HoldsToPullStartDate','2','Set the default start date for the Holds to pull list to this many days ago',NULL,'Integer');
 INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('alphabet','A B C D E F G H I J K L M N O P Q R S T U V W X Y Z','Alphabet than can be expanded into browse links, e.g. on Home > Patrons',NULL,'free');
+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('UNIMARCField100Language', 'fre','UNIMARC field 100 default language',NULL,'short');
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 966ec9b..f353715 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -6083,6 +6083,13 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
     SetVersion($DBversion);
 }
 
+$DBversion = "XXX";
+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
+    $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('UNIMARCField100Language', 'fre','UNIMARC field 100 default language',NULL,'short')");
+    print "Upgrade to $DBversion done (Bug 8347 - Koha forces UNIMARC 100 field code language to 'fre')\n";
+    SetVersion($DBversion);
+}
+
 =head1 FUNCTIONS
 
 =head2 TableExists($table)
-- 
1.7.9.5



More information about the Koha-patches mailing list