a5575f6d2eda27a9cec640161907b65747a183f6
[kivitendo-erp.git] / sql / Pg-upgrade2 / oe_ar_ap_delivery_orders_edit_notes_as_html.pl
1 # @tag: oe_ar_ap_delivery_orders_edit_notes_as_html
2 # @description: Einkaufs- und Verkaufsbelege: Bemerkungsfeld in HTML umwandeln
3 # @depends: requirement_spec_edit_html
4 package SL::DBUpgrade2::oe_ar_ap_delivery_orders_edit_notes_as_html;
5
6 use strict;
7 use utf8;
8
9 use SL::DBUtils;
10 use SL::Presenter::EscapedText qw(escape);
11
12 use parent qw(SL::DBUpgrade2::Base);
13
14 sub convert_column {
15   my ($self, $table, $column) = @_;
16
17   my $sth = $self->dbh->prepare(qq|UPDATE $table SET $column = ? WHERE id = ?|) || $self->dberror;
18
19   foreach my $row (selectall_hashref_query($::form, $self->dbh, qq|SELECT id, $column FROM $table WHERE $column IS NOT NULL|)) {
20     next if !$row->{$column} || (($row->{$column} =~ m{^<[a-z]+>}) && ($row->{$column} =~ m{</[a-z]+>$}));
21
22     my $new_content = "" . escape($row->{$column});
23     $new_content    =~ s{\r}{}g;
24     $new_content    =~ s{\n\n+}{</p><p>}g;
25     $new_content    =~ s{\n}{<br />}g;
26     $new_content    =  "<p>${new_content}</p>" if $new_content;
27
28     $sth->execute($new_content, $row->{id}) if $new_content ne $row->{$column};
29   }
30
31   $sth->finish;
32 }
33
34 sub run {
35   my ($self) = @_;
36
37   $self->convert_column($_, 'notes') for qw(oe delivery_orders ar ap);
38
39   return 1;
40 }
41
42 1;