auf Original-Version zurückgesetzt
[kivitendo-erp.git] / SL / DB / Helper / CustomVariables.pm
index 6373c32..a6ab5ae 100644 (file)
@@ -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;