X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDBUpgrade2.pm;h=ae07d1c084e7ff6868accad13779a9aa084dabed;hb=63b3e9b39fe288260a3d6103db86359b3339f21a;hp=66ce85f9c1c3d9e9b6847a75c29027b87ffd5a92;hpb=faef45c2e723c9fbc80d1d84b8481367204719b7;p=kivitendo-erp.git diff --git a/SL/DBUpgrade2.pm b/SL/DBUpgrade2.pm index 66ce85f9c..ae07d1c08 100644 --- a/SL/DBUpgrade2.pm +++ b/SL/DBUpgrade2.pm @@ -3,9 +3,11 @@ package SL::DBUpgrade2; use SL::Common; require Exporter; -@ISA = qw(Exporter); +our @ISA = qw(Exporter); -@EXPORT = qw(parse_dbupdate_controls sort_dbupdate_controls); +our @EXPORT = qw(parse_dbupdate_controls sort_dbupdate_controls); + +use strict; sub parse_dbupdate_controls { $main::lxdebug->enter_sub(); @@ -27,7 +29,7 @@ sub parse_dbupdate_controls { my $control = { "priority" => 1000, - "depends" => [], + "depends" => [], }; while () { @@ -47,34 +49,31 @@ sub parse_dbupdate_controls { } } - $control->{charset} ||= Common::DEFAULT_CHARSET; + next if ($control->{ignore}); - _control_error($form, $file_name, - $locale->text("Missing 'tag' field.")) - unless ($control->{"tag"}); + $control->{charset} ||= Common::DEFAULT_CHARSET; - _control_error($form, $file_name, - $locale->text("The 'tag' field must only consist of " . - "alphanumeric characters or the carachters " . - "- _ ( )")) - if ($control->{"tag"} =~ /[^a-zA-Z0-9_\(\)\-]/); + if (!$control->{"tag"}) { + _control_error($form, $file_name, $locale->text("Missing 'tag' field.")) ; + } - _control_error($form, $file_name, - sprintf($locale->text("More than one control file " . - "with the tag '%s' exist."), - $control->{"tag"})) - if (defined($all_controls{$control->{"tag"}})); + if ($control->{"tag"} =~ /[^a-zA-Z0-9_\(\)\-]/) { + _control_error($form, $file_name, $locale->text("The 'tag' field must only consist of alphanumeric characters or the carachters - _ ( )")) + } - _control_error($form, $file_name, - sprintf($locale->text("Missing 'description' field."))) - unless ($control->{"description"}); + if (defined($all_controls{$control->{"tag"}})) { + _control_error($form, $file_name, sprintf($locale->text("More than one control file with the tag '%s' exist."), $control->{"tag"})) + } - $control->{"priority"} *= 1; - $control->{"priority"} = 1000 unless ($control->{"priority"}); + if (!$control->{"description"}) { + _control_error($form, $file_name, sprintf($locale->text("Missing 'description' field."))) ; + } - $control->{"file"} = $file; + $control->{"priority"} *= 1; + $control->{"priority"} ||= 1000; + $control->{"file"} = $file; - map({ delete($control->{$_}); } qw(depth applied)); + delete @{$control}{qw(depth applied)}; $all_controls{$control->{"tag"}} = $control; @@ -83,15 +82,11 @@ sub parse_dbupdate_controls { foreach my $control (values(%all_controls)) { foreach my $dependency (@{$control->{"depends"}}) { - _control_error($form, $control->{"file"}, - sprintf($locale->text("Unknown dependency '%s'."), - $dependency)) - if (!defined($all_controls{$dependency})); + _control_error($form, $control->{"file"}, sprintf($locale->text("Unknown dependency '%s'."), $dependency)) if (!defined($all_controls{$dependency})); } map({ $_->{"loop"} = 0; } values(%all_controls)); - _check_for_loops($form, $control->{"file"}, \%all_controls, - $control->{"tag"}); + _check_for_loops($form, $control->{"file"}, \%all_controls, $control->{"tag"}); } map({ _dbupdate2_calculate_depth(\%all_controls, $_->{"tag"}) } @@ -111,14 +106,12 @@ sub _check_for_loops { if ($ctrl->{"loop"} == 1) { # Not done yet. - _control_error($form, $file_name, - $main::locale->text("Dependency loop detected:") . - " " . join(" -> ", @path)) + _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"} }); + map({ _check_for_loops($form, $file_name, $controls, $_, @path); } @{ $ctrl->{"depends"} }); $ctrl->{"loop"} = 2; } } @@ -129,18 +122,17 @@ sub _control_error { $form = $main::form; my $locale = $main::locale; - $form->error(sprintf($locale->text("Error in database control file '%s': %s"), - $file_name, $message)); + $form->error(sprintf($locale->text("Error in database control file '%s': %s"), $file_name, $message)); } sub _dbupdate2_calculate_depth { - $main::lxdebug->enter_sub(); + $main::lxdebug->enter_sub(2); my ($tree, $tag) = @_; my $node = $tree->{$tag}; - return $main::lxdebug->leave_sub() if (defined($node->{"depth"})); + return $main::lxdebug->leave_sub(2) if (defined($node->{"depth"})); my $max_depth = 0; @@ -152,16 +144,13 @@ sub _dbupdate2_calculate_depth { $node->{"depth"} = $max_depth + 1; - $main::lxdebug->leave_sub(); + $main::lxdebug->leave_sub(2); } sub sort_dbupdate_controls { - return - sort({ $a->{"depth"} != $b->{"depth"} ? $a->{"depth"} <=> $b->{"depth"} : - $a->{"priority"} != $b->{"priority"} ? - $a->{"priority"} <=> $b->{"priority"} : - $a->{"tag"} cmp $b->{"tag"} } values(%{$_[0]})); + return sort({ $a->{"depth"} != $b->{"depth"} ? $a->{"depth"} <=> $b->{"depth"} + : $a->{"priority"} != $b->{"priority"} ? $a->{"priority"} <=> $b->{"priority"} + : $a->{"tag"} cmp $b->{"tag"} } values(%{$_[0]})); } - 1;