From 202e7c3cc7943d19f110f945b116f6f421b0cd5b Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Mon, 3 Jan 2022 15:08:27 -0300 Subject: [PATCH] Bug 29525: Make batch_anonymise.pl deal with holds This patch makes the batch_anonymise.pl script handle holds too. It does so by leveraging on the newly introduced method 'filter_by_anonymizable' and also 'anonymize'. To test: 1. Have a patron with two past holds. 2. Make sure they are a few days back: $ koha-mysql kohadev > UPDATE old_reserves SET timestamp=ADDDATE(NOW(), INTERVAL -4 DAY); 3. Run: $ kshell k$ perl misc/cronjobs/batch_anonymise.pl --days 2 -v => SUCCESS: You see something like: Checkouts and holds before 2022-01-01 will be anonymised. 0 checkouts anonymised. 2 holds anonymised. 4. Repeat 3 => SUCCESS: They are already anonymized. You see Checkouts and holds before 2022-01-01 will be anonymised. 0 checkouts anonymised. 0 holds anonymised. 5. Sign off :-D --- misc/cronjobs/batch_anonymise.pl | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/misc/cronjobs/batch_anonymise.pl b/misc/cronjobs/batch_anonymise.pl index edea4fa7ed..c0a17407d6 100755 --- a/misc/cronjobs/batch_anonymise.pl +++ b/misc/cronjobs/batch_anonymise.pl @@ -17,15 +17,19 @@ # You should have received a copy of the GNU General Public License # along with Koha; if not, see . -use strict; -use warnings; +use Modern::Perl; use Koha::Script -cron; + use C4::Context; +use C4::Log qw( cronlogaction ); + +use Koha::Database; +use Koha::DateUtils qw(dt_from_string); use Koha::Patrons; + use Date::Calc qw( Add_Delta_Days Today ); use Getopt::Long qw( GetOptions ); -use C4::Log qw( cronlogaction ); sub usage { print STDERR <new->schema->storage->datetime_parser; + 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"; +$verbose and print "Checkouts and holds before $formatdate will be anonymised.\n"; my $rows = Koha::Patrons->search_patrons_to_anonymise( { before => $formatdate } )->anonymise_issue_history( { before => $formatdate } ); $verbose and print int($rows) . " checkouts anonymised.\n"; +$rows = Koha::Old::Holds->filter_by_anonymizable->search( + { + timestamp => { + '<' => $dtf->format_datetime( + dt_from_string()->subtract( days => $days ) + ) + } + } +)->anonymize; + +$verbose and print int($rows) . " holds anonymised.\n"; + exit(0); -- 2.32.0