148 lines
No EOL
4.5 KiB
Perl
Executable file
148 lines
No EOL
4.5 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
use C4::Context;
|
|
use Getopt::Long;
|
|
use C4::Biblio;
|
|
|
|
#
|
|
# script that checks zebradir structure & create directories & mandatory files if needed
|
|
#
|
|
#
|
|
|
|
$|=1; # flushes output
|
|
|
|
print "Zebra directory =>".C4::Context->zebraconfig('biblioserver')->{directory}."\n";
|
|
print "Koha directory =>".C4::Context->config('intranetdir')."\n";
|
|
|
|
my $zebradir = C4::Context->zebraconfig('biblioserver')->{directory};
|
|
my $kohadir = C4::Context->config('intranetdir');
|
|
my $directory;
|
|
my $skip_export;
|
|
my $keep_export;
|
|
GetOptions(
|
|
'd:s' => \$directory,
|
|
's' => \$skip_export,
|
|
'k' => \$keep_export,
|
|
);
|
|
|
|
$directory = "export" unless $directory;
|
|
|
|
my $created_dir_or_file = 0;
|
|
print "====================\n";
|
|
print "checking directories & files\n";
|
|
print "====================\n";
|
|
unless (-d "$zebradir") {
|
|
system("mkdir -p $zebradir");
|
|
print "created $zebradir\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
unless (-d "$zebradir/lock") {
|
|
mkdir "$zebradir/lock";
|
|
print "created $zebradir/lock\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
unless (-d "$zebradir/register") {
|
|
mkdir "$zebradir/register";
|
|
print "created $zebradir/register\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
unless (-d "$zebradir/shadow") {
|
|
mkdir "$zebradir/shadow";
|
|
print "created $zebradir/shadow\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
unless (-d "$zebradir/tab") {
|
|
mkdir "$zebradir/tab";
|
|
print "created $zebradir/tab\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
|
|
unless (-d "$zebradir/etc") {
|
|
mkdir "$zebradir/etc";
|
|
print "created $zebradir/etc\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
|
|
unless (-f "$zebradir/tab/record.abs") {
|
|
system("cp -f $kohadir/zebraplugin/zebradb/biblios/tab/record_for_unimarc.abs $zebradir/tab/record.abs");
|
|
print "copied record.abs\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
unless (-f "$zebradir/tab/sort-string-utf.chr") {
|
|
system("cp -f $kohadir/zebraplugin/zebradb/biblios/tab/sort-string-utf.chr $zebradir/tab/sort-string-utf.chr");
|
|
print "copied sort-string-utf.chr\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
unless (-f "$zebradir/tab/word-phrase-utf.chr") {
|
|
system("cp -f $kohadir/zebraplugin/zebradb/biblios/tab/word-phrase-utf.chr $zebradir/tab/word-phrase-utf.chr");
|
|
print "copied word-phase-utf.chr\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
unless (-f "$zebradir/tab/bib1.att") {
|
|
system("cp -f $kohadir/zebraplugin/zebradb/biblios/tab/bib1.att $zebradir/tab/bib1.att");
|
|
print "copied bib1.att\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
|
|
unless (-f "$zebradir/etc/zebra-biblios.cfg") {
|
|
system("cp -f $kohadir/zebraplugin/etc/zebra-biblios.cfg $zebradir/etc/zebra-biblios.cfg");
|
|
print "copied zebra-biblios.cfg\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
unless (-f "$zebradir/etc/ccl.properties") {
|
|
system("cp -f $kohadir/zebraplugin/etc/ccl.properties $zebradir/etc/ccl.properties");
|
|
print "copied ccl.properties\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
unless (-f "$zebradir/etc/pqf.properties") {
|
|
system("cp -f $kohadir/zebraplugin/etc/pqf.properties $zebradir/etc/pqf.properties");
|
|
print "copied pqf.properties\n";
|
|
$created_dir_or_file++;
|
|
}
|
|
|
|
if ($created_dir_or_file) {
|
|
print "created : $created_dir_or_file directories & files\n";
|
|
} else {
|
|
print "file & directories OK\n";
|
|
}
|
|
|
|
if ($skip_export) {
|
|
print "====================\n";
|
|
print "SKIPPING biblio export\n";
|
|
print "====================\n";
|
|
} else {
|
|
print "====================\n";
|
|
print "exporting biblios\n";
|
|
print "====================\n";
|
|
mkdir "$directory" unless (-d $directory);
|
|
open(OUT,">:utf8","$directory/export") or die $!;
|
|
my $dbh=C4::Context->dbh;
|
|
my $sth;
|
|
$sth=$dbh->prepare("select biblionumber from biblioitems order by biblionumber");
|
|
$sth->execute();
|
|
my $i=0;
|
|
while (my ($biblionumber) = $sth->fetchrow) {
|
|
my $record = MARCgetbiblio($dbh,$biblionumber);
|
|
print ".";
|
|
print "\r$i" unless ($i++ %100);
|
|
print OUT $record->as_usmarc();
|
|
}
|
|
close(OUT);
|
|
}
|
|
|
|
print "====================\n";
|
|
print "REINDEXING zebra\n";
|
|
print "====================\n";
|
|
system("zebraidx -g iso2709 -c $zebradir/etc/zebra-biblios.cfg -d biblios update $directory");
|
|
system("zebraidx -g iso2709 -c $zebradir/etc/zebra-biblios.cfg -d biblios commit");
|
|
|
|
print "====================\n";
|
|
print "CLEANING\n";
|
|
print "====================\n";
|
|
if ($k) {
|
|
print "NOTHING cleaned : the $directory has been kept. You can re-run this script with the -s parameter if you just want to rebuild zebra after changing the record.abs or another zebra config file\n";
|
|
} else {
|
|
system("rm -rf $zebradir");
|
|
print "directory $zebradir deleted\n";
|
|
}
|
|
} |