From 6b1df98ddf5ca353e7665334907bab7dcb33e7dc Mon Sep 17 00:00:00 2001 From: Paul Poulain Date: Thu, 23 Jul 2009 17:23:35 +0200 Subject: [PATCH] script to remove authorities without biblio attached Signed-off-by: Galen Charlton --- .../remove_unused_authorities.pl | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100755 misc/migration_tools/remove_unused_authorities.pl diff --git a/misc/migration_tools/remove_unused_authorities.pl b/misc/migration_tools/remove_unused_authorities.pl new file mode 100755 index 0000000000..2400647c30 --- /dev/null +++ b/misc/migration_tools/remove_unused_authorities.pl @@ -0,0 +1,92 @@ +#!/usr/bin/perl + +#script to administer Authorities without biblio +# This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html) + +# Copyright 2009 BibLibre +# written 2009-05-04 by paul dot poulain at biblibre.com +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use strict; + +use C4::Context; +use C4::AuthoritiesMarc; +use Getopt::Long; +use warnings; + +my ($test,@authtypes); +my $want_help = 0; +GetOptions( + 'aut|authtypecode:s' => \@authtypes, + 't' => \$test, + 'h|help' => \$want_help +); + +if ($want_help) { + print_usage(); + exit 0; +} + +my $dbh=C4::Context->dbh; +@authtypes or @authtypes = qw( NC ); +my $thresholdmin=0; +my $thresholdmax=0; +my @results; +# prepare the request to retrieve all authorities of the requested types +my $rqselect = $dbh->prepare( + qq{SELECT * from auth_header where authtypecode IN (} + . join(",",map{$dbh->quote($_)}@authtypes) + . ")" +); +$|=1; + +$rqselect->execute; +my $counter=0; +my $totdeleted=0; +my $totundeleted=0; +while (my $data=$rqselect->fetchrow_hashref){ + my $query; + $query= "an=".$data->{'authid'}; + # search for biblios mapped + my ($err,$res,$used) = C4::Search::SimpleSearch($query,0,10); + print "."; + print "$counter\n" unless $counter++ % 100; + # if found, delete, otherwise, just count + if ($used>=$thresholdmin and $used<=$thresholdmax){ + DelAuthority($data->{'authid'}) unless $test; + $totdeleted++; + } else { + $totundeleted++; + } +} + +print "$counter authorities parsed, $totdeleted deleted and $totundeleted unchanged because used\n"; + + +sub print_usage { + print <<_USAGE_; +$0: Removes unused authorities. + +This script will parse all authoritiestypes given as parameter, and remove authorities without any biblio attached. +warning : there is no individual confirmation ! +parameters + --aut|authtypecode TYPE the list of authtypes to check + --t|test test mode, don't delete really, just count + --help or -h show this message. + +_USAGE_ +} -- 2.39.5