Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / sql / Pg-upgrade2 / custom_variables_convert_width_height_to_pixels.pl
diff --git a/sql/Pg-upgrade2/custom_variables_convert_width_height_to_pixels.pl b/sql/Pg-upgrade2/custom_variables_convert_width_height_to_pixels.pl
new file mode 100644 (file)
index 0000000..45b22f8
--- /dev/null
@@ -0,0 +1,59 @@
+# @tag: custom_variables_convert_width_height_to_pixels
+# @description: Benutzerdefinierte Variablen: Optionen »WIDTH« & »HEIGHT« nach Pixel konvertieren
+# @depends: release_3_5_8
+package SL::DBUpgrade2::custom_variables_convert_width_height_to_pixels;
+
+use strict;
+use utf8;
+
+use parent qw(SL::DBUpgrade2::Base);
+
+use SL::DBUtils;
+
+sub find_configs {
+  my ($self) = @_;
+
+  my $sql = <<SQL;
+    SELECT id, options
+    FROM custom_variable_configs
+    WHERE (COALESCE(options, '') ~ 'WIDTH=|HEIGHT=')
+      AND (type = 'textfield')
+SQL
+
+  return selectall_hashref_query($::form, $self->dbh, $sql);
+}
+
+sub fix_configs {
+  my ($self, $configs) = @_;
+
+  my $sql = <<SQL;
+    UPDATE custom_variable_configs
+    SET options = ?
+    WHERE id = ?
+SQL
+
+  my $update_h = prepare_query($::form, $self->dbh, $sql);
+
+  # Old defaults: 30 columns, 5 rows
+  # New defaults: 225px width, 90px height
+
+  foreach my $config (@{ $configs }) {
+    $config->{options} =~ s{WIDTH=(\d+)}{  int($1 * (225 / 30.0)) }eg;
+    $config->{options} =~ s{HEIGHT=(\d+)}{ int($1 * ( 90 /  5.0)) }eg;
+
+    $update_h->execute(@{$config}{qw(options id)}) || $self->db_error($sql);
+  }
+
+  $update_h->finish;
+}
+
+sub run {
+  my ($self) = @_;
+
+  my $configs = $self->find_configs;
+  $self->fix_configs($configs) if @{ $configs };
+
+  return 1;
+}
+
+1;