Bug 6572: Script batch anonymisation wrapper
authorD Ruth Bavousett <ruth@bywatersolutions.com>
Sat, 9 Jul 2011 16:50:06 +0000 (12:50 -0400)
committerChris Cormack <chrisc@catalyst.net.nz>
Thu, 20 Oct 2011 00:57:14 +0000 (13:57 +1300)
This little script, given a --days numeric parameter, will anonymise checkouts
before that many days ago.  Useful for sites that want to automatically do this on
a periodic (cronnable) basis.

Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
misc/cronjobs/batch_anonymise.pl [new file with mode: 0755]

diff --git a/misc/cronjobs/batch_anonymise.pl b/misc/cronjobs/batch_anonymise.pl
new file mode 100755 (executable)
index 0000000..857171b
--- /dev/null
@@ -0,0 +1,76 @@
+#!/usr/bin/perl
+
+# Copyright 2011, ByWater Solutions.
+#
+# 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;
+
+BEGIN {
+
+    # find Koha's Perl modules
+    # test carefully before changing this
+    use FindBin;
+    eval { require "$FindBin::Bin/../kohalib.pl" };
+}
+
+use C4::Context;
+use C4::Circulation;
+use C4::Dates;
+use Date::Calc qw(
+  Today
+  Add_Delta_Days
+);
+use Getopt::Long;
+
+sub usage {
+    print STDERR <<USAGE;
+Usage: $0  --days DAYS  [-h|--help]
+   --days DAYS        (MANDATORY) anonymise patron history that is older than DAYS days.
+   -v --verbose       gives a little more information
+   -h --help          prints this help message, and exits, ignoring all
+                      other options
+USAGE
+    exit $_[0];
+}
+
+my ( $help, $days, $verbose );
+
+GetOptions(
+    'h|help'       => \$help,
+    'days:i'       => \$days,
+    'v|verbose'    => \$verbose,
+) || usage(1);
+
+if ($help) {
+    usage(0);
+}
+
+if ( !$days  ) {
+    print "The days parameter is mandatory.\n\n";
+    usage(1);
+}
+
+my ($year,$month,$day) = Today();
+my ($newyear,$newmonth,$newday) = Add_Delta_Days ($year,$month,$day,(-1)*$days);
+my $formatdate = sprintf "%4d-%02d-%02d",$newyear,$newmonth,$newday;
+$verbose and print "Checkouts before $formatdate will be anonymised.\n";
+
+my $rows = AnonymiseIssueHistory($formatdate);
+$verbose and print "$rows checkouts anonymised.\n";
+
+exit(0);