__NAME__ process_filter
[perl]
	my @filters = grep /^ui_filter:/, keys %$CGI;
  FILTERS: {
	last FILTERS unless @filters;
	foreach my $key (@filters) {
		my $val = delete $CGI->{$key};
		$key =~ s/ui_filter://;
		next unless $val;
		if($val =~ /checkbox/) {
			$CGI->{$key} = $Tag->filter($val, $CGI->{$key}, $key);
		}
		else {
			next unless defined $CGI->{$key};
			$CGI->{$key} = $Tag->filter($val, $CGI->{$key}, $key);
		}
	}
  }
	my @uploads = grep /^ui_upload_file_path:/, keys %$CGI;
#Debug("Check uploads: " . join ",", @uploads);
	return unless @uploads;
	foreach my $key (@uploads) {
#Debug("Check key=$key");
		my $path = delete $CGI->{$key};
#Debug("path=$path");
		$key =~ s/^ui_upload_file_path://;
#Debug("key=$key");
		next unless $path;
#Debug("cgi->$key=$CGI->{$key}");
		next unless defined $CGI->{$key};
		$CGI->{$key} =~ s/\0(.*)//s;
		my $old = $1;
		unless($CGI->{$key}) {
			$CGI->{$key} = $old; 
			next;
		}
		my $isfile = $Tag->value_extended( { name => $key, test => 'isfile' } );
#Debug("cgi->$key isfile='$isfile'");
		next unless $isfile;
		$path =~ s,/+$,,;
		my $fn = $CGI->{$key};
		$fn =~ s,.*/,,;
		$fn =~ s,.*\\,,;
		$fn = $Tag->filter('filesafe', $fn);
#Debug("cgi->$key now='$CGI->{$key}'");
		my $out = "$path/$fn";
		unless ($Tag->value_extended( { name => $key, outfile => $out , yes => 1} ) ) {
			$Scratch->{ui_failure} .= "\nFailed to write upload file $out";
		}
	}
	return;
[/perl]
