@@ -, +, @@ --- Koha/Patrons.pm | 16 +++++++++++++--- misc/cronjobs/cleanup_database.pl | 13 +++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) --- a/Koha/Patrons.pm +++ a/Koha/Patrons.pm @@ -332,34 +332,44 @@ sub search_anonymized { =head3 lock - Koha::Patrons->search({ some filters })->lock({ expire => 1, remove => 1 }) + Koha::Patrons->search({ some filters })->lock({ expire => 1, remove => 1, verbose => 1 }) Lock the passed set of patron objects. Optionally expire and remove holds. + Optional verbose flag is used in cron job. Wrapper around Koha::Patron->lock. =cut sub lock { my ( $self, $params ) = @_; + my $count = $self->count; while( my $patron = $self->next ) { $patron->lock($params); } + if( $params->{verbose} ) { + warn "Locked $count patrons\n"; + } } =head3 anonymize - Koha::Patrons->search({ some filters })->anonymize; + Koha::Patrons->search({ some filters })->anonymize({ verbose => 1 }); Anonymize passed set of patron objects. + Optional verbose flag is used in cron job. Wrapper around Koha::Patron->anonymize. =cut sub anonymize { - my ( $self ) = @_; + my ( $self, $params ) = @_; + my $count = $self->count; while( my $patron = $self->next ) { $patron->anonymize; } + if( $params->{verbose} ) { + warn "Anonymized $count patrons\n"; + } } =head3 _type --- a/misc/cronjobs/cleanup_database.pl +++ a/misc/cronjobs/cleanup_database.pl @@ -304,6 +304,19 @@ if($allDebarments) { print "$count restrictions were deleted.\nDone with all restrictions purge.\n" if $verbose; } +# Handle unsubscribe requests from GDPR consent form, depends on UnsubscribeReflectionDelay preference +Koha::Patrons->search_unsubscribed->lock({ expire => 1, remove => 1, verbose => $verbose }); +# Anonymize patron data, depending on PatronAnonymizeDelay +Koha::Patrons->search_anonymize_candidates({ locked => 1 })->anonymize({ verbose => $verbose }); +# Remove patron data, depending on PatronRemovalDelay +{ + my $rs = Koha::Patrons->search_anonymized; + my $count = $rs->count; + my $rv = $rs->delete; + print "Removed $count anonymized patrons\n" if $verbose && $rv==1; + warn "Problem with removing anonymized patrons\n" if $rv<1 && $count; +} + if( $pExpSelfReg ) { DeleteExpiredSelfRegs(); } --