Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions gp-limit-submissions/gpls-skip-limit-if-blank.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php
/**
* Gravity Perks // Limit Submissions // Skip Limit If Any Field Value Is Blank
* https://gravitywiz.com/documentation/gravity-forms-limit-submissions/
*
* Skip evaluation of Limit Submissions feed whenever one of its field-based rules
* resolves to a blank value for the current submission.
*/
add_filter( 'gpls_should_apply_rules', function( $should_apply, $form_id, $rule_test ) {

if ( ! $should_apply || empty( $rule_test->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() );
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Consider adding null check for get_field() result.

If get_field() can return null, passing it directly to get_limit_field_value() might cause issues. Consider adding a defensive check.

+	$field = $rule->get_field();
+	if ( ! $field ) {
+		continue;
+	}
-	$value = $rule->get_limit_field_value( $rule->get_field() );
+	$value = $rule->get_limit_field_value( $field );

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In gpl-limit-submissions/gpls-skip-limit-if-blank.php around line 35, the call
passes $rule->get_field() directly into get_limit_field_value() without checking
for null; add a defensive null check: first get the field into a variable,
verify it is not null (and optionally that it is of the expected type/string),
and only then call get_limit_field_value($field); if null, handle appropriately
(return early, skip processing, or use a safe default) to avoid errors.


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 );