SL::DBUpgrade2::Base: Spalte-zu-HTML-Funktion ausgelagert
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 10 Feb 2016 12:29:54 +0000 (13:29 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 10 Feb 2016 12:29:54 +0000 (13:29 +0100)
Damit diese Funktion auch aus anderen Datenbankupgradescripten heraus
benutzt werden kann, wurde sie nun in die Basisklasse verschoben.

SL/DBUpgrade2/Base.pm
sql/Pg-upgrade2/requirement_spec_edit_html.pl

index 594fb7f..024282f 100644 (file)
@@ -143,6 +143,26 @@ SQL
   $self->db_query(qq|ALTER TABLE $params{schema}."$params{table}" DROP CONSTRAINT "${_}"|) for map { $_->[0] } @{ $constraints };
 }
 
+sub convert_column_to_html {
+  my ($self, $table, $column) = @_;
+
+  my $sth = $self->dbh->prepare(qq|UPDATE $table SET $column = ? WHERE id = ?|) || $self->dberror;
+
+  foreach my $row (selectall_hashref_query($::form, $self->dbh, qq|SELECT id, $column FROM $table WHERE $column IS NOT NULL|)) {
+    next if !$row->{$column} || (($row->{$column} =~ m{^<[a-z]+>}) && ($row->{$column} =~ m{</[a-z]+>$}));
+
+    my $new_content = "" . $::request->presenter->escape($row->{$column});
+    $new_content    =~ s{\r}{}g;
+    $new_content    =~ s{\n\n+}{</p><p>}g;
+    $new_content    =~ s{\n}{<br />}g;
+    $new_content    =  "<p>${new_content}</p>" if $new_content;
+
+    $sth->execute($new_content, $row->{id}) if $new_content ne $row->{$column};
+  }
+
+  $sth->finish;
+}
+
 1;
 __END__
 
@@ -317,6 +337,11 @@ C<acc_trans> yet.
 This method is the entry point for the actual upgrade. Each upgrade
 script must provide this method.
 
+=item C<convert_column_to_html $table, $column>
+
+Converts the content of a single column from text to HTML suitable for
+use with the ckeditor.
+
 =back
 
 =head1 BUGS
index c6c7b9f..5075653 100644 (file)
@@ -10,26 +10,6 @@ use SL::DBUtils;
 
 use parent qw(SL::DBUpgrade2::Base);
 
-sub convert_column {
-  my ($self, $table, $column) = @_;
-
-  my $sth = $self->dbh->prepare(qq|UPDATE $table SET $column = ? WHERE id = ?|) || $self->dberror;
-
-  foreach my $row (selectall_hashref_query($::form, $self->dbh, qq|SELECT id, $column FROM $table WHERE $column IS NOT NULL|)) {
-    next if !$row->{$column} || (($row->{$column} =~ m{^<[a-z]+>}) && ($row->{$column} =~ m{</[a-z]+>$}));
-
-    my $new_content = "" . $::request->presenter->escape($row->{$column});
-    $new_content    =~ s{\r}{}g;
-    $new_content    =~ s{\n\n+}{</p><p>}g;
-    $new_content    =~ s{\n}{<br />}g;
-    $new_content    =  "<p>${new_content}</p>" if $new_content;
-
-    $sth->execute($new_content, $row->{id}) if $new_content ne $row->{$column};
-  }
-
-  $sth->finish;
-}
-
 sub run {
   my ($self) = @_;
 
@@ -41,7 +21,7 @@ sub run {
     map({ ($_ => 'longdescription') } qw(translation orderitems invoice delivery_order_items)),
   );
 
-  $self->convert_column($_, $tables{$_}) for keys %tables;
+  $self->convert_column_to_html($_, $tables{$_}) for keys %tables;
 
   return 1;
 }