From 6584aba475e6000a0f496b8d0fddcc68d19ef887 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Wed, 7 Jun 2023 12:42:01 +0100 Subject: [PATCH] Bug 30649: (follow-up) Improve database update This patch implements the proposed switch to use the standard DB handle and only require Koha::Encryption if necessary. --- installer/data/mysql/db_revs/221200041.pl | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/installer/data/mysql/db_revs/221200041.pl b/installer/data/mysql/db_revs/221200041.pl index ad933e316e..44777c040f 100755 --- a/installer/data/mysql/db_revs/221200041.pl +++ b/installer/data/mysql/db_revs/221200041.pl @@ -1,7 +1,7 @@ use Modern::Perl; return { - bug_number => "30649", + bug_number => "30649", description => "Increase the vendor EDI account password field to 256 characters", up => sub { my ($args) = @_; @@ -10,16 +10,17 @@ return { ALTER TABLE vendor_edi_accounts CHANGE COLUMN `password` `password` mediumtext COLLATE utf8mb4_unicode_ci DEFAULT NULL }); - require Koha::Encryption; - my $e = Koha::Encryption->new; - - my $schema = Koha::Database->new()->schema(); - my $rs = $schema->resultset('VendorEdiAccount')->search(); - while ( my $a = $rs->next() ) { - my $password = $a->password; - $password = $e->encrypt_hex($password); - $a->password($password); - $a->update(); + my $edi_vendors = + $dbh->selectall_arrayref( "SELECT * FROM vendor_edit_accounts", { Slice => {} } ); + if (@$edi_vendors) { + require Koha::Encryption; + my $e = Koha::Encryption->new; + for my $edi_vendor (@$edi_vendors) { + my $id = $edi_vendor->{id}; + my $password = $edi_vendor->{password}; + $password = $e->encrypt_hex($password); + $dbh->do("UPDATE edi_vendor_accounts SET password = $password WHERE id = $id"); + } } }, }; -- 2.41.0