SL::DB::Helper::Manager: neue Funktion zum Pre-Cachen aller Einträge einer Tabelle
[kivitendo-erp.git] / SL / DB / Helper / CustomVariables.pm
index fef521c..3869f16 100644 (file)
@@ -4,6 +4,7 @@ use strict;
 use Carp;
 use Data::Dumper;
 use List::Util qw(first);
+use List::UtilsBy qw(sort_by);
 
 use constant META_CVARS => 'cvars_config';
 
@@ -12,7 +13,7 @@ sub import {
   my $caller_package = caller;
 
   # TODO: if module is empty, module overloading needs to take effect
-  # certain stuff may have more than one overload, odr even more than one type
+  # certain stuff may have more than one overload, or even more than one type
   defined $caller_package     or croak 'need to be included from a caller reference';
 
   $params{module}     ||= _calc_modules_from_overloads(%params) if $params{overloads};
@@ -98,6 +99,8 @@ sub make_cvar_by_configs {
       @$configs
     );
 
+    @return = sort_by { $_->config->sortkey } @return;
+
     return \@return;
   }
 }
@@ -309,7 +312,7 @@ sub make_cvar_custom_filter {
         query_is_sql       => 1,
       );
 
-      $query{config} =~ s{ \bdefault_value\b \s*=\s* (?!'') }{default_value::${conversion} = }x if $conversion;
+      $query{config} =~ s{ (?<! NOT\( ) default_value (?! \s*is\s+not\s+null) }{default_value::${conversion}}x if $conversion;
 
       ($query{not_customized}, $bind_vals{not_customized}) = Rose::DB::Object::QueryBuilder::build_select(
         dbh          => $config->dbh,
@@ -327,7 +330,7 @@ sub make_cvar_custom_filter {
         # remove rose aliases. query builder sadly is not reentrant, and will reuse the same aliases. :(
         $query{$key} =~ s{\bt\d+(?:\.)?\b}{}g;
 
-        # manually inline the values. again, rose doen't know how to handly bind params in subqueries :(
+        # manually inline the values. again, rose doesn't know how to handle bind params in subqueries :(
         $query{$key} =~ s{\?}{ $config->dbh->quote(shift @{ $bind_vals{$key} }) }xeg;
 
         $query{$key} =~ s{\n}{ }g;
@@ -358,7 +361,7 @@ __END__
 
 =head1 NAME
 
-SL::DB::Helper::CustomVariables - Mixin to provide custom variables relations
+SL::DB::Helper::CustomVariables - Mixin to provide custom variable relations
 
 =head1 SYNOPSIS