Auto-build LANG authorized values
authortipaul <tipaul>
Mon, 3 Jan 2005 12:59:49 +0000 (12:59 +0000)
committertipaul <tipaul>
Mon, 3 Jan 2005 12:59:49 +0000 (12:59 +0000)
misc/migration_tools/buildLANG.pl [new file with mode: 0755]

diff --git a/misc/migration_tools/buildLANG.pl b/misc/migration_tools/buildLANG.pl
new file mode 100755 (executable)
index 0000000..0e28493
--- /dev/null
@@ -0,0 +1,122 @@
+#!/usr/bin/perl
+# script that rebuild thesaurus from biblio table.
+
+# delete  FROM  `marc_subfield_table`  WHERE tag =  "606" AND subfieldcode = 9;
+use strict;
+
+# Koha modules used
+# use MARC::File::USMARC;
+# use MARC::Record;
+# use MARC::Batch;
+use C4::Context;
+use C4::Biblio;
+use C4::AuthoritiesMarc;
+use Time::HiRes qw(gettimeofday);
+
+use Getopt::Long;
+my ( $fields, $number,$language) = ('',0);
+my ($version, $verbose, $test_parameter, $field,$delete,$subfields);
+GetOptions(
+    'h' => \$version,
+    'd' => \$delete,
+    't' => \$test_parameter,
+    's:s' => \$fields,
+    'v' => \$verbose,
+       'l:s' => \$language,
+);
+
+if ($version or !$fields) {
+       print <<EOF
+Small script to recreate the LANG list in authorised values from existing langs in the catalogue.
+This script is useful when you migrate your datas with bulkmarcimport.pl as it populates parameters tables that are not modified by bulkmarcimport.
+
+parameters :
+\th : this version/help screen
+\ts : the field or field list where the lang codes are stored.
+\td : delete every entry of LANG category before doing work.
+\tl : the language of the language list (fr or en for instance)
+
+The table is populated with iso codes and meaning (in french).
+If the complete language name is unknown, the code is used instead and you will be warned by the script
+
+SAMPLES :
+ ./buildLANG -d -s "('101a','101b')"
+EOF
+;#
+exit;
+}
+
+my %codesiso;
+
+%codesiso = (
+       'eng' => 'english',
+       'fre' => 'french'
+       );
+
+%codesiso = (
+       'mis' => 'diverses',
+       'und' => 'inconnue',
+       'mul' => 'multilingue',
+       'ger' => 'allemand',
+       'eng' => 'anglais',
+       'ara' => 'arabe',
+       'arm' => 'arménien',
+       'baq' => 'basque',
+       'ber' => 'berbere',
+       'bre' => 'breton',
+       'bul' => 'bulgare',
+       'cat' => 'catalan',
+       'chi' => 'chinois',
+       'cro' => 'croate',
+       'dan' => 'danois',
+       'spa' => 'espagnol',
+       'esp' => 'espéranto',
+       'fin' => 'finnois',
+       'fra' => 'français ancien',
+       'fre' => 'français',
+       'wel' => 'gallois',
+       'grc' => 'grec classique',
+       'gre' => 'grec moderne',
+       'heb' => 'hébreu',
+       'hun' => 'hongrois',
+       'ita' => 'italien',
+       'jap' => 'japonais',
+       'lat' => 'latin',
+       'dut' => 'néerlandais',
+       'nor' => 'norvégien',
+       'pol' => 'polonais',
+       'por' => 'portugais',
+       'rum' => 'roumain',
+       'rus' => 'russe',
+       'ser' => 'serbe',
+       'swe' => 'suedois',
+       'cze' => 'tchèque',
+       'tur' => 'turc',
+       'ukr' => 'ukraine',
+       'slo' => 'slovène',
+       'scr' => 'serbo-croate',
+       ) if $language eq 'fr';
+
+my $dbh = C4::Context->dbh;
+if ($delete) {
+       print "deleting lang list\n";
+       $dbh->do("delete from authorised_values where category='LANG'");
+}
+
+if ($test_parameter) {
+       print "TESTING MODE ONLY\n    DOING NOTHING\n===============\n";
+}
+my $starttime = gettimeofday;
+
+my $sth = $dbh->prepare("SELECT DISTINCT subfieldvalue FROM marc_subfield_table WHERE tag + subfieldcode IN $fields order by subfieldvalue");
+
+$sth->execute;
+my $i=1;
+
+print "=========================\n";
+my $sth2 = $dbh->prepare("insert into authorised_values (category, authorised_value, lib) values (?,?,?)");
+while (my ($langue) = $sth->fetchrow) {
+       $sth2->execute('LANG',$langue,$langue?$codesiso{$langue}:$langue);
+       print "lang : $langue is unknown is iso list\n" unless $codesiso{$langue};
+}
+print "=========================\n";