From 36b76d881d500e9e6d183511c819463f6de9f12c Mon Sep 17 00:00:00 2001 From: saifsultanc Date: Thu, 23 Oct 2025 13:14:41 +0530 Subject: [PATCH] `gpdtc-recalc.php`: Fixed an issue with the snippet causing infinite recursion. --- gp-date-time-calculator/gpdtc-recalc.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/gp-date-time-calculator/gpdtc-recalc.php b/gp-date-time-calculator/gpdtc-recalc.php index 80d01a707..8034de90f 100644 --- a/gp-date-time-calculator/gpdtc-recalc.php +++ b/gp-date-time-calculator/gpdtc-recalc.php @@ -16,15 +16,24 @@ $form_id = 123; // Change this to the form's ID $field_id = 4; // Change this to the Calculation field's ID. - $values = array(); + $values = array(); + $calculating = false; - add_filter( sprintf( 'gform_get_input_value_%s', $form_id ), function( $value, $entry, $field, $input_id ) use ( $field_id, &$values ) { - if ( $field['id'] !== $field_id ) { + add_filter( sprintf( 'gform_get_input_value_%s', $form_id ), function( $value, $entry, $field, $input_id ) use ( $field_id, &$values, $calculating ) { + if ( $calculating || $field['id'] !== $field_id ) { $values[ $field['id'] ] = $value; return $value; } + + // Set flag to prevent infinite recursion. + $calculating = true; + $form = GFAPI::get_form( $entry['form_id'] ); $_entry = $entry + $values; + + // Reset flag. + $calculating = false; + return GFCommon::calculate( $field, $form, $_entry ); }, 10, 4 );