koha-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Koha-cvs] koha/misc/migration_tools check_marc_definition.pl [rel_2_2]


From: paul poulain
Subject: [Koha-cvs] koha/misc/migration_tools check_marc_definition.pl [rel_2_2]
Date: Tue, 12 Sep 2006 09:27:39 +0000

CVSROOT:        /cvsroot/koha
Module name:    koha
Branch:         rel_2_2
Changes by:     paul poulain <tipaul>   06/09/12 09:27:39

Modified files:
        misc/migration_tools: check_marc_definition.pl 

Log message:
        improving check_marc_definition.pl to be able to automatically set used 
subfields & unset unused subfields (run without parameters to see new 
parameters)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/misc/migration_tools/check_marc_definition.pl?cvsroot=koha&only_with_tag=rel_2_2&r1=1.1.2.3&r2=1.1.2.4

Patches:
Index: check_marc_definition.pl
===================================================================
RCS file: /cvsroot/koha/koha/misc/migration_tools/check_marc_definition.pl,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -b -r1.1.2.3 -r1.1.2.4
--- check_marc_definition.pl    16 Jun 2005 15:45:59 -0000      1.1.2.3
+++ check_marc_definition.pl    12 Sep 2006 09:27:39 -0000      1.1.2.4
@@ -14,11 +14,13 @@
 
 use Getopt::Long;
 my ( $input_marc_file, $number) = ('',0);
-my ($version,$confirm,$all);
+my ($version,$confirm,$all,$autoclean,$autoactivate);
 GetOptions(
     'h' => \$version,
     'c' => \$confirm,
        'a' => \$all,
+       'l' => \$autoclean,
+       'm' => \$autoactivate,
 );
 
 if ($version || ($confirm eq '')) {
@@ -27,6 +29,8 @@
 It show all fields/subfields that are in the MARC DB but NOT in any tab (= 
fields used but not visible) Usually, this means you made an error in your MARC 
editor. Sometimes, this is something normal.
 
 options
+\t-l : autoclean => all unused subfields will be unactivated automatically in 
frameworks. Use carefully !!!!
+\t-m : autoactivate => all subfields used but unactivated will automatically 
be activated in tab 1. Use carrefully !!!
 \t-a : will show all subfields usages, not only subfields in tab ignore that 
are used.
 Enter $0 -c to run this script (the -c being here only to "confirm"
 EOF
@@ -43,6 +47,7 @@
 if ($all) {
        print "framework|tag|subfield|value|used|tab\n";
 }
+my $sth3 = $dbh->prepare("update marc_subfield_structure set tab=1 where 
frameworkcode=? and tagfield=? and tagsubfield=?");
 while (my ($total,$tag,$subfield,$frameworkcode) = $sth->fetchrow) {
        $sth2->execute($tag,$subfield,$frameworkcode);
        $tags{$frameworkcode." / ".$tag." / ".$subfield} ++;
@@ -52,6 +57,8 @@
        } else {
                if ($tab eq -1 && $kohafield ne "biblio.biblionumber" && 
$kohafield ne "biblioitems.biblioitemnumber" && $kohafield ne 
"items.itemnumber") {
                        print "Tab ignore for framework $frameworkcode, 
$tag\$$subfield - $liblibrarian (used $total times)\n";
+                       $sth3->execute($frameworkcode,$tag,$subfield) if 
$autoactivate && tab eq -1;
+                       
                }
        }
 }
@@ -59,7 +66,12 @@
 $sth = $dbh->prepare("select frameworkcode,tagfield,tagsubfield from 
marc_subfield_structure where tab<>-1 order by 
frameworkcode,tagfield,tagsubfield");
 $sth->execute;
 print "===================\n";
+# for autoclean...
+my $sth2 = $dbh->prepare("update marc_subfield_structure set tab=-1 where 
frameworkcode=? and tagfield=? and tagsubfield=?");
 while (my ($frameworkcode,$tag,$subfield) = $sth->fetchrow) {
-       print "$tag, $subfield in framework $frameworkcode is active, but never 
filled\n" unless $tags{$frameworkcode." / ".$tag." / ".$subfield};
+       print "$tag, $subfield in framework $frameworkcode is active, but never 
filled" unless $tags{$frameworkcode." / ".$tag." / ".$subfield};
+       print "... auto cleaned" if $autoclean;
+       print "\n" unless $tags{$frameworkcode." / ".$tag." / ".$subfield};
+       $sth2->execute($frameworkcode,$tag,$subfield) if $autoclean;
 }
 print "Done\n";




reply via email to

[Prev in Thread] Current Thread [Next in Thread]