122 lines
3.1 KiB
Perl
Executable file
122 lines
3.1 KiB
Perl
Executable file
#!/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";
|