From 7301b41b97bdf2ca90a1ad5e394f071252ca9a14 Mon Sep 17 00:00:00 2001
From: Agustin Moyano <agustinmoyano@theke.io>
Date: Wed, 8 Apr 2020 16:53:43 -0300
Subject: [PATCH] Bug 25086: (follow-up) Set changed_fields column as nullable

This patch reverts previous patch (left there because it was signed off), and sets changed_fields column as nullable.
Attend only this test plan and not previous patch.

To test:
1. Do not apply any patch
2. Set PatronSelfRegistrationVerifyByEmail preference to require
3. Fill self registration form in opac and submit
CHECK => OPAC dies with a nasty message, that says Field 'changed_fields' doesn't have a default value
4. Apply this patch and updatedatabase
5. Repeat step 3
SUCCESS => Registry process continues as expected
6. Sign off

Sponsored-by: Orex Digital
---
 Koha/Patron/Modification.pm                      | 2 --
 installer/data/mysql/atomicupdate/bug_25086.perl | 9 +++++++++
 installer/data/mysql/kohastructure.sql           | 2 +-
 3 files changed, 10 insertions(+), 3 deletions(-)
 create mode 100644 installer/data/mysql/atomicupdate/bug_25086.perl

diff --git a/Koha/Patron/Modification.pm b/Koha/Patron/Modification.pm
index 375b6886ad..51f182a80b 100644
--- a/Koha/Patron/Modification.pm
+++ b/Koha/Patron/Modification.pm
@@ -70,8 +70,6 @@ sub store {
         };
     }
 
-    $self->changed_fields('') unless defined $self->changed_fields;
-
     return $self->SUPER::store();
 }
 
diff --git a/installer/data/mysql/atomicupdate/bug_25086.perl b/installer/data/mysql/atomicupdate/bug_25086.perl
new file mode 100644
index 0000000000..1ecdced1d7
--- /dev/null
+++ b/installer/data/mysql/atomicupdate/bug_25086.perl
@@ -0,0 +1,9 @@
+$DBversion = 'XXX'; # will be replaced by the RM
+if( CheckVersion( $DBversion ) ) {
+    # you can use $dbh here like:
+     
+    $dbh->do( "ALTER TABLE borrower_modifications MODIFY changed_fields MEDIUMTEXT DEFAULT NULL" );
+
+    # Always end with this (adjust the bug info)
+    NewVersion( $DBversion, 25086, "Set changed_fields column of borrower_modifications as nullable");
+}
diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql
index 740b5958c8..97801a50e2 100644
--- a/installer/data/mysql/kohastructure.sql
+++ b/installer/data/mysql/kohastructure.sql
@@ -3387,7 +3387,7 @@ CREATE TABLE borrower_attribute_types_branches( -- association table between bor
 CREATE TABLE IF NOT EXISTS `borrower_modifications` (
   `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   `verification_token` varchar(255) NOT NULL DEFAULT '',
-  `changed_fields` MEDIUMTEXT NOT NULL,
+  `changed_fields` MEDIUMTEXT DEFAULT NULL,
   `borrowernumber` int(11) NOT NULL DEFAULT '0',
   `cardnumber` varchar(32) DEFAULT NULL,
   `surname` LONGTEXT,
-- 
2.25.0