From 5b6e288848e009c97339bfab1cfd313c482a2c1d Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Tue, 28 Nov 2023 13:27:27 +0000 Subject: [PATCH] Bug 23260: Database updates and new system preferences AnonymizeLastBorrower / AnonymizeLastBorrowerDays This patch alters the items_last_borrowers table to allow for NULL borrowers It also adds two new system preferences to allow controlling the anonymization of items_last_borrower data Signed-off-by: Martin Renvoize Signed-off-by: Kyle M Hall Signed-off-by: Peter Moore --- .../data/mysql/atomicupdate/bug_23260.pl | 33 +++++++++++++++++++ installer/data/mysql/kohastructure.sql | 2 +- installer/data/mysql/mandatory/sysprefs.sql | 2 ++ .../en/modules/admin/preferences/patrons.pref | 8 +++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100755 installer/data/mysql/atomicupdate/bug_23260.pl diff --git a/installer/data/mysql/atomicupdate/bug_23260.pl b/installer/data/mysql/atomicupdate/bug_23260.pl new file mode 100755 index 00000000000..c0033269bcd --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_23260.pl @@ -0,0 +1,33 @@ +use Modern::Perl; +use Koha::Installer::Output qw(say_warning say_success say_info); + +return { + bug_number => "23260", + description => + "Make created_on from items_last_borrower not update to current timestamp ON UPDATE, and add AnonymizeLastBorrower and AnonymizeLastBorrowerDays preferences", + up => sub { + my ($args) = @_; + my ( $dbh, $out ) = @$args{qw(dbh out)}; + + # Do you stuffs here + $dbh->do("ALTER TABLE items_last_borrower MODIFY COLUMN `borrowernumber` int(11) NULL"); + say_success( $out, "items_last_borrower updated to allow NULL borrowernumbers" ); + + $dbh->do( + q{ + ALTER TABLE items_last_borrower + MODIFY created_on timestamp NOT NULL DEFAULT current_timestamp() + } + ); + say_success( $out, "Fixed items_last_borrower.created_on column to prevent automatic timestamp updates" ); + + $dbh->do( + q{ + INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES + ('AnonymizeLastBorrower','0',NULL,'If enabled, anonymize item\'s last borrower','YesNo'), + ('AnonymizeLastBorrowerDays','0',NULL,'Item\'s last borrower older than this preference will be anonymized','Integer') + } + ); + say_success( $out, "Added new system preferences 'AnonymizeLastBorrower' and 'AnonymizeLastBorrowerDays'" ); + }, +}; diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 733015e6e22..0fa24cb24b9 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -4256,7 +4256,7 @@ DROP TABLE IF EXISTS `items_last_borrower`; CREATE TABLE `items_last_borrower` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemnumber` int(11) NOT NULL, - `borrowernumber` int(11) NOT NULL, + `borrowernumber` int(11) NULL, `created_on` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), KEY `borrowernumber` (`borrowernumber`), diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql index 2476391b835..ba4aab1a3be 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -62,6 +62,8 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('AmazonCoverImages','0',NULL,'Display Cover Images in staff interface from Amazon Web Services','YesNo'), ('AmazonLocale','US','US|CA|DE|FR|IN|JP|UK','Use to set the Locale of your Amazon.com Web Services','Choice'), ('AnonSuggestions','0',NULL,'Set to enable Anonymous suggestions to AnonymousPatron borrowernumber','YesNo'), +('AnonymizeLastBorrower','0',NULL,'If enabled, anonymise item\'s last borrower','YesNo'), +('AnonymizeLastBorrowerDays','0',NULL,'Item\'s last borrower older than this preference will be anonymised','Integer'), ('AnonymousPatron','0',NULL,'Set the identifier (borrowernumber) of the anonymous patron. Used for suggestion and checkout history privacy',''), ('ApiKeyLog', '0', NULL, 'If enabled, log API key actions (create, revoke, activate, delete)', 'YesNo'), ('ApplyFrameworkDefaults', 'new', 'new|duplicate|changed|imported', 'Configure when to apply framework default values - when cataloguing a new record, or when editing a record as new (duplicating), or when changing framework, or when importing a record', 'multiple'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref index d94bc0dd4bc..13012be74c5 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref @@ -468,6 +468,14 @@ Patrons: initiator: populateCookieConsentedJS processor: prepareCookieConsentedJS - '
NOTE: The cookie consent modal can be customised using the CookieConsentPopup html customisation.' + - + - pref: AnonymizeLastBorrower + choices: + yes: Anonymize + no: "Don't anonymize" + - " item's last borrower after " + - pref: AnonymizeLastBorrowerDays + - days. Security: - - Login passwords for staff and patrons must be at least -- 2.39.5