X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FHelper%2FCustomVariables.pm;h=a6ab5ae18859f8bf7e8035069c42ea8c38a06c3e;hb=80eceeda50a7c64673a6f3b41df4dbaa388db2da;hp=6373c32e0b3d17df0b0b7113264f0ac7a6a6a907;hpb=43de7ef11a1fe565968656c24ea0772a60667b3b;p=kivitendo-erp.git diff --git a/SL/DB/Helper/CustomVariables.pm b/SL/DB/Helper/CustomVariables.pm index 6373c32e0..a6ab5ae18 100644 --- a/SL/DB/Helper/CustomVariables.pm +++ b/SL/DB/Helper/CustomVariables.pm @@ -4,7 +4,7 @@ use strict; use Carp; use Data::Dumper; use List::Util qw(first); -use List::UtilsBy qw(sort_by partition_by); +use List::UtilsBy qw(partition_by); use constant META_CVARS => 'cvars_config'; @@ -92,21 +92,18 @@ sub make_cvar_by_configs { my $cvar; if ( $cvars_by_config{$_->id} ) { $cvar = $cvars_by_config{$_->id}; - $cvar->{is_valid} = !$invalids_by_config{$_->id}; } else { $cvar = _new_cvar($self, %params, config => $_); $self->add_custom_variables($cvar); - $cvar->{is_valid} = 1; } + $cvar->{is_valid} = !$invalids_by_config{$_->id}; $cvar->{config} = $_; $cvar; } @$configs ); - @return = sort_by { $_->config->sortkey } @return; - return \@return; } } @@ -182,9 +179,9 @@ sub _all_configs { $cache->{module} = { partition_by { $_->module } @$configs }; } - $params{module} - ? $cache->{modules}{$params{module}} - : $cache->{all}; + return $params{module} && !ref $params{module} ? $cache->{module}{$params{module}} + : $params{module} && ref $params{module} ? [ map { @{ $cache->{module}{$_} // [] } } @{ $params{module} } ] + : $cache->{all}; } sub _overload_by_module { @@ -381,7 +378,8 @@ sub _all_invalids { # easy 2: no module in params? no validity return [] unless $params{module}; - my @module_configs = grep { $_->module eq $params{module} } @$configs; + my %wanted_modules = ref $params{module} ? map { $_ => 1 } @{ $params{module} } : ($params{module} => 1); + my @module_configs = grep { $wanted_modules{$_->module} } @$configs; return [] unless @module_configs;