X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDBUpgrade2.pm;h=66ce85f9c1c3d9e9b6847a75c29027b87ffd5a92;hb=4b17bfa891c1dd495558090ef8f558a51222b7a3;hp=514448f6dd6411e0f9a69bf30a1d620c1130961e;hpb=4fd8bdbfb46b8b63a7d05457959b98c4956d1dbd;p=kivitendo-erp.git diff --git a/SL/DBUpgrade2.pm b/SL/DBUpgrade2.pm index 514448f6d..66ce85f9c 100644 --- a/SL/DBUpgrade2.pm +++ b/SL/DBUpgrade2.pm @@ -1,5 +1,7 @@ package SL::DBUpgrade2; +use SL::Common; + require Exporter; @ISA = qw(Exporter); @@ -45,6 +47,8 @@ sub parse_dbupdate_controls { } } + $control->{charset} ||= Common::DEFAULT_CHARSET; + _control_error($form, $file_name, $locale->text("Missing 'tag' field.")) unless ($control->{"tag"}); @@ -103,20 +107,26 @@ sub _check_for_loops { push(@path, $tag); - _control_error($form, $file_name, - $main::locale->text("Dependency loop detected:") . - " " . join(" -> ", @path)) - if ($controls->{$tag}->{"loop"}); + my $ctrl = $controls->{$tag}; - $controls->{$tag}->{"loop"} = 1; - map({ _check_for_loops($form, $file_name, $controls, $_, @path); } - @{$controls->{$tag}->{"depends"}}); + if ($ctrl->{"loop"} == 1) { + # Not done yet. + _control_error($form, $file_name, + $main::locale->text("Dependency loop detected:") . + " " . join(" -> ", @path)) + } elsif ($ctrl->{"loop"} == 0) { + # Not checked yet. + $ctrl->{"loop"} = 1; + map({ _check_for_loops($form, $file_name, $controls, $_, @path); } + @{ $ctrl->{"depends"} }); + $ctrl->{"loop"} = 2; + } } sub _control_error { my ($form, $file_name, $message) = @_; - my $form = $main::form; + $form = $main::form; my $locale = $main::locale; $form->error(sprintf($locale->text("Error in database control file '%s': %s"),