package SL::DBUpgrade2;
+use SL::Common;
+
require Exporter;
@ISA = qw(Exporter);
}
}
+ $control->{charset} ||= Common::DEFAULT_CHARSET;
+
_control_error($form, $file_name,
$locale->text("Missing 'tag' field."))
unless ($control->{"tag"});
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"),