diff --git a/gp-limit-submissions/gpls-skip-limit-if-blank.php b/gp-limit-submissions/gpls-skip-limit-if-blank.php new file mode 100644 index 000000000..edc621d4d --- /dev/null +++ b/gp-limit-submissions/gpls-skip-limit-if-blank.php @@ -0,0 +1,61 @@ +rules ) || empty( $rule_test->rule_group ) ) { + return $should_apply; + } + + // Replace '123' with your Form ID + $target_form_ids = array( 123 ); + + if ( ! in_array( (int) $form_id, $target_form_ids, true ) ) { + return $should_apply; + } + + $feed_id = method_exists( $rule_test->rule_group, 'get_feed_id' ) ? $rule_test->rule_group->get_feed_id() : null; + + if ( $feed_id && ! empty( $rule_test->skip_limit_feed_on_blank ) ) { + return false; + } + + foreach ( $rule_test->rules as $rule ) { + if ( ! $rule instanceof GPLS_Rule_Field ) { + continue; + } + + $value = $rule->get_limit_field_value( $rule->get_field() ); + + if ( false === $value ) { + continue; + } + + if ( is_array( $value ) ) { + $value = GFCommon::trim_deep( $value ); + + if ( GFCommon::is_empty_array( $value ) ) { + $rule_test->skip_limit_feed_on_blank = true; + return false; + } + + continue; + } + + if ( is_string( $value ) ) { + $value = trim( $value ); + } + + if ( rgblank( $value ) ) { + $rule_test->skip_limit_feed_on_blank = true; + return false; + } + } + + return $should_apply; +}, 20, 3 );