diff --git a/C4/Circulation.pm b/C4/Circulation.pm
index 3fc124f811..1de40e8665 100644
--- a/C4/Circulation.pm
+++ b/C4/Circulation.pm
@@ -1967,6 +1967,7 @@ sub MarkIssueReturned {
if ( $privacy == 2) {
# The default of 0 does not work due to foreign key constraints
# The anonymisation will fail quietly if AnonymousPatron is not a valid entry
+ # FIXME the above is unacceptable - bug 9942 relates
my $anonymouspatron = (C4::Context->preference('AnonymousPatron')) ? C4::Context->preference('AnonymousPatron') : 0;
my $sth_ano = $dbh->prepare("UPDATE old_issues SET borrowernumber=?
WHERE borrowernumber = ?
@@ -2821,7 +2822,7 @@ sub DeleteTransfer {
=head2 AnonymiseIssueHistory
- $rows = AnonymiseIssueHistory($date,$borrowernumber)
+ ($rows,$err_history_not_deleted) = AnonymiseIssueHistory($date,$borrowernumber)
This function write NULL instead of C<$borrowernumber> given on input arg into the table issues.
if C<$borrowernumber> is not set, it will delete the issue history for all borrower older than C<$date>.
@@ -2829,7 +2830,7 @@ if C<$borrowernumber> is not set, it will delete the issue history for all borro
If c<$borrowernumber> is set, it will delete issue history for only that borrower, regardless of their opac privacy
setting (force delete).
-return the number of affected rows.
+return the number of affected rows and a value that evaluates to true if an error occurred deleting the history.
=cut
@@ -2856,8 +2857,9 @@ sub AnonymiseIssueHistory {
}
my $sth = $dbh->prepare($query);
$sth->execute(@bind_params);
+ my $anonymisation_err = $dbh->err;
my $rows_affected = $sth->rows; ### doublecheck row count return function
- return $rows_affected;
+ return ($rows_affected, $anonymisation_err);
}
=head2 SendCirculationAlert
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-privacy.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-privacy.tt
index 5245fdfea7..233222b5e2 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-privacy.tt
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-privacy.tt
@@ -13,9 +13,11 @@
[% IF ( deleted ) %]
Your reading history has been deleted.
+ [% ELSIF ( err_history_not_deleted ) %]
+ The deletion of your reading history failed, because there is a problem with the configuration of this feature. Please help to fix the system by informing your library of this error.
[% END %]
[% IF ( privacy_updated ) %]
- Your privacy rules have been updated
+ Your privacy rules have been updated.
[% END %]
Privacy rule
diff --git a/misc/cronjobs/batch_anonymise.pl b/misc/cronjobs/batch_anonymise.pl
index 857171b968..48a58c61ca 100755
--- a/misc/cronjobs/batch_anonymise.pl
+++ b/misc/cronjobs/batch_anonymise.pl
@@ -19,6 +19,7 @@
use strict;
use warnings;
+use Carp;
BEGIN {
@@ -70,7 +71,8 @@ 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);
+my ($rows, $err_history_not_deleted) = AnonymiseIssueHistory($formatdate);
+carp "Anonymisation of reading history failed." if ($err_history_not_deleted);
$verbose and print "$rows checkouts anonymised.\n";
exit(0);
diff --git a/opac/opac-privacy.pl b/opac/opac-privacy.pl
index bbfb8fc6da..22fe694e58 100755
--- a/opac/opac-privacy.pl
+++ b/opac/opac-privacy.pl
@@ -51,9 +51,14 @@ if ($op eq "update_privacy")
if ($op eq "delete_record") {
# delete all reading records for items returned
# uses a hardcoded date ridiculously far in the future
- AnonymiseIssueHistory('2999-12-12',$borrowernumber);
+ my ($rows,$err_history_not_deleted) = AnonymiseIssueHistory('2999-12-12',$borrowernumber);
# confirm the user the deletion has been done
- $template->param('deleted' => 1);
+ if ( !$err_history_not_deleted ) {
+ $template->param( 'deleted' => 1 );
+ }
+ else {
+ $template->param( 'err_history_not_deleted' => 1 );
+ }
}
# get borrower privacy ....
my ( $borr ) = GetMemberDetails( $borrowernumber );
diff --git a/tools/cleanborrowers.pl b/tools/cleanborrowers.pl
index 65ce8131e2..0d48b99946 100755
--- a/tools/cleanborrowers.pl
+++ b/tools/cleanborrowers.pl
@@ -145,7 +145,8 @@ if ( $params->{'step3'} ) {
# Anonymising all members
if ($do_anonym) {
- $totalAno = AnonymiseIssueHistory($filterdate2);
+ #FIXME: anonymisation errors are not handled
+ ($totalAno,my $anonymisation_error) = AnonymiseIssueHistory($filterdate2);
$template->param(
filterdate1 => $filterdate2,
do_anonym => '1',