Bug 11441: enhance remove_unused_authorities.pl ability to select records
authorJuan Romay Sieira <juan.sieira@xercode.es>
Tue, 21 Jan 2014 11:46:09 +0000 (12:46 +0100)
committerKyle M Hall <kyle@bywatersolutions.com>
Wed, 13 Aug 2014 13:59:31 +0000 (09:59 -0400)
remove_unused_authorities.pl previously required that --aut be supplied
to specify one or more authority types to check for unlinked authority
records.  If --aut was omitted, it would default to search for
records of authority type NC, which is not present in many (or any?)
Koha databases.

Now, if --aut is omitted, unlinked authority records of any type
are removed.

To test it:
Parse only PERSO_NAME authorities:
misc/migration_tools/remove_unused_authorities.pl -aut PERSO_NAME

Parse all authorities:
misc/migration_tools/remove_unused_authorities.pl

Signed-off-by: Nicolas Legrand <nicolas.legrand@bulac.fr>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
(cherry picked from commit 0f6652d62bd9053c87de5b94eb6a35f68a3af4bf)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
(cherry picked from commit 770cab7d8da7e138629a80af1bef212e29b79f09)

misc/migration_tools/remove_unused_authorities.pl

index 7920923..5171538 100755 (executable)
@@ -46,16 +46,13 @@ if ($test) {
 }
 
 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)
-    . ")"
-);
+my $rqsql = "SELECT * from auth_header where 1";
+$rqsql .= " AND authtypecode IN (".join(",",map{$dbh->quote($_)}@authtypes).")" if @authtypes;
+my $rqselect = $dbh->prepare($rqsql);
 $|=1;
 
 $rqselect->execute;
@@ -89,7 +86,7 @@ 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.
+This script will parse all authoritiestypes (or only those 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