GetModels Filtered: gelaunderten Filter im Plugin zur Verfügung stellen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 9 Jul 2015 12:32:23 +0000 (14:32 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 9 Jul 2015 12:33:47 +0000 (14:33 +0200)
SL/Controller/Helper/GetModels/Filtered.pm

index 642d542..eaf7404 100644 (file)
@@ -9,7 +9,7 @@ use List::MoreUtils qw(uniq);
 
 use Rose::Object::MakeMethods::Generic (
   scalar => [ qw(filter_args filter_params orig_filter filter) ],
-  'scalar --get_set_init' => [ qw(form_params launder_to) ],
+  'scalar --get_set_init' => [ qw(form_params launder_to laundered) ],
 );
 
 sub init {
@@ -60,6 +60,9 @@ sub read_params {
     }
   }
 
+  # Store laundered result in $self->laundered.
+  $self->laundered($laundered // $filter) unless $parse_filter_args{no_launder};
+
   # $::lxdebug->dump(0, "get_current_filter_params: ", \%calculated_params);
 
   $self->filter_params(\%calculated_params);
@@ -111,6 +114,12 @@ sub init_launder_to {
   'filter'
 }
 
+sub init_laundered {
+  my ($self) = @_;
+
+  $self->get_models->finalize;
+  return $self->{laundered};
+}
 
 1;
 
@@ -185,6 +194,18 @@ See L<SL::Controller::Helper::ParseFilter> for a description of the filter forma
 C<Filtered> will honor custom filters defined in RDBO managers. See
 L<SL::DB::Helper::Filtered> for an explanation fo those.
 
+=head1 FUNCTIONS
+
+=over 4
+
+=item C<laundered>
+
+Finalizes the object (which causes laundering of the filter structure)
+and returns a hashref of the laundered filter. If the plugin is
+configured not to launder then C<undef> will be returned.
+
+=back
+
 =head1 BUGS
 
 =over 4