Koha/misc/migration_tools/remove_unused_authorities.pl
Colin Campbell d8b362e0f9 Bug 5415 Let calls of SimpleSearch utilize considtent interface
Remove some unnecessary checks when check of error is
sufficient. Make the order in some cases more logical
Should remove some possibilities of runtime warning noise.
Although some calls belong to the 'Nothing could
ever go wrong' school have added some warnings

Signed-off-by: Christophe Croullebois <christophe.croullebois@biblibre.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-04-08 13:52:57 +12:00

95 lines
2.6 KiB
Perl
Executable file

#!/usr/bin/perl
#script to administer Authorities without biblio
# 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.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use strict;
use warnings;
use C4::Context;
use C4::AuthoritiesMarc;
use Getopt::Long;
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);
if (defined $err) {
warn "error: $err on search $query\n";
next;
}
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_
}