From 8117f54e4ae5d7744c5ba2ac1bb904c066614007 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Fri, 6 Feb 2026 14:36:25 +0300 Subject: [PATCH 1/6] Fix Conditional Logic not copied over when duplicating a field --- classes/controllers/FrmFieldsController.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/classes/controllers/FrmFieldsController.php b/classes/controllers/FrmFieldsController.php index 48f175d960..f9a6368006 100644 --- a/classes/controllers/FrmFieldsController.php +++ b/classes/controllers/FrmFieldsController.php @@ -184,8 +184,13 @@ public static function load_single_field( $field_object, $values, $form_id = 0 ) } if ( ! isset( $field ) && is_object( $field_object ) ) { - $field_object->parent_form_id = $values['id'] ?? $field_object->form_id; - $field = FrmFieldsHelper::setup_edit_vars( $field_object ); + if ( isset( $values['form_key'] ) ) { + $field_object->parent_form_id = $values['id']; + } else { + $parent_form_id = FrmDb::get_var( 'frm_forms', array( 'id' => $field_object->form_id ), 'parent_form_id' ); + $field_object->parent_form_id = $parent_form_id ? $parent_form_id : $field_object->form_id; + } + $field = FrmFieldsHelper::setup_edit_vars( $field_object ); } /** From 5aea1b706feeb80523e70f33ecc83408522d25fd Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Fri, 6 Feb 2026 16:52:07 +0300 Subject: [PATCH 2/6] Extract related code to a new function --- classes/controllers/FrmFieldsController.php | 27 ++++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/classes/controllers/FrmFieldsController.php b/classes/controllers/FrmFieldsController.php index f9a6368006..64321f5ca7 100644 --- a/classes/controllers/FrmFieldsController.php +++ b/classes/controllers/FrmFieldsController.php @@ -184,12 +184,8 @@ public static function load_single_field( $field_object, $values, $form_id = 0 ) } if ( ! isset( $field ) && is_object( $field_object ) ) { - if ( isset( $values['form_key'] ) ) { - $field_object->parent_form_id = $values['id']; - } else { - $parent_form_id = FrmDb::get_var( 'frm_forms', array( 'id' => $field_object->form_id ), 'parent_form_id' ); - $field_object->parent_form_id = $parent_form_id ? $parent_form_id : $field_object->form_id; - } + $field_object->parent_form_id = self::get_parent_form_id( $field_object, $values ); + $field = FrmFieldsHelper::setup_edit_vars( $field_object ); } @@ -210,6 +206,25 @@ public static function load_single_field( $field_object, $values, $form_id = 0 ) require FrmAppHelper::plugin_path() . '/classes/views/frm-forms/add_field.php'; } + /** + * Get the parent form id for the field. + * + * @since x.x + * + * @param object $field_object The field object. + * @param array $values Either form or field values. + * + * @return int + */ + private static function get_parent_form_id( $field_object, $values ) { + $form_id = $field_object->form_id; + if ( isset( $values['form_key'] ) ) { + return $values['id'] ?? $form_id; + } + + return FrmDb::get_var( 'frm_forms', array( 'id' => $form_id ), 'parent_form_id' ) ?? $form_id; + } + /** * @since 3.0 * From dd5d54daf76dfb742882c0909fb4859c68bd81e3 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Fri, 6 Feb 2026 16:59:57 +0300 Subject: [PATCH 3/6] Fix code style errors --- classes/controllers/FrmFieldsController.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/classes/controllers/FrmFieldsController.php b/classes/controllers/FrmFieldsController.php index 64321f5ca7..f0244ea606 100644 --- a/classes/controllers/FrmFieldsController.php +++ b/classes/controllers/FrmFieldsController.php @@ -185,7 +185,6 @@ public static function load_single_field( $field_object, $values, $form_id = 0 ) if ( ! isset( $field ) && is_object( $field_object ) ) { $field_object->parent_form_id = self::get_parent_form_id( $field_object, $values ); - $field = FrmFieldsHelper::setup_edit_vars( $field_object ); } @@ -218,11 +217,14 @@ public static function load_single_field( $field_object, $values, $form_id = 0 ) */ private static function get_parent_form_id( $field_object, $values ) { $form_id = $field_object->form_id; + if ( isset( $values['form_key'] ) ) { return $values['id'] ?? $form_id; } - return FrmDb::get_var( 'frm_forms', array( 'id' => $form_id ), 'parent_form_id' ) ?? $form_id; + $parent_form_id = FrmDb::get_var( 'frm_forms', array( 'id' => $form_id ), 'parent_form_id' ); + + return $parent_form_id ? $parent_form_id : $form_id; } /** From 4c831a6b8e9c9a1e257492d5abaa1085ad84012e Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Fri, 6 Feb 2026 17:03:33 +0300 Subject: [PATCH 4/6] Fix code style errors --- classes/controllers/FrmFieldsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/controllers/FrmFieldsController.php b/classes/controllers/FrmFieldsController.php index f0244ea606..2f023d624b 100644 --- a/classes/controllers/FrmFieldsController.php +++ b/classes/controllers/FrmFieldsController.php @@ -185,7 +185,7 @@ public static function load_single_field( $field_object, $values, $form_id = 0 ) if ( ! isset( $field ) && is_object( $field_object ) ) { $field_object->parent_form_id = self::get_parent_form_id( $field_object, $values ); - $field = FrmFieldsHelper::setup_edit_vars( $field_object ); + $field = FrmFieldsHelper::setup_edit_vars( $field_object ); } /** From 1cef77e9104ad20d0b6d93736d7f1ae10b5f612f Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Tue, 24 Feb 2026 12:03:38 +0300 Subject: [PATCH 5/6] Change function name --- classes/controllers/FrmFieldsController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/controllers/FrmFieldsController.php b/classes/controllers/FrmFieldsController.php index 2f023d624b..90b48f5cf8 100644 --- a/classes/controllers/FrmFieldsController.php +++ b/classes/controllers/FrmFieldsController.php @@ -184,7 +184,7 @@ public static function load_single_field( $field_object, $values, $form_id = 0 ) } if ( ! isset( $field ) && is_object( $field_object ) ) { - $field_object->parent_form_id = self::get_parent_form_id( $field_object, $values ); + $field_object->parent_form_id = self::get_form_id_from_field_or_form( $field_object, $values ); $field = FrmFieldsHelper::setup_edit_vars( $field_object ); } @@ -215,7 +215,7 @@ public static function load_single_field( $field_object, $values, $form_id = 0 ) * * @return int */ - private static function get_parent_form_id( $field_object, $values ) { + private static function get_form_id_from_field_or_form( $field_object, $values ) { $form_id = $field_object->form_id; if ( isset( $values['form_key'] ) ) { From 5413ba61ccf89393b4bebae7ea0219f7f2997ab0 Mon Sep 17 00:00:00 2001 From: Abdi Tolessa <41271840+AbdiTolesa@users.noreply.github.com> Date: Tue, 24 Feb 2026 12:10:23 +0300 Subject: [PATCH 6/6] Cast function return to integer to align it with the function doc --- classes/controllers/FrmFieldsController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/controllers/FrmFieldsController.php b/classes/controllers/FrmFieldsController.php index 90b48f5cf8..49812dc965 100644 --- a/classes/controllers/FrmFieldsController.php +++ b/classes/controllers/FrmFieldsController.php @@ -216,13 +216,13 @@ public static function load_single_field( $field_object, $values, $form_id = 0 ) * @return int */ private static function get_form_id_from_field_or_form( $field_object, $values ) { - $form_id = $field_object->form_id; + $form_id = absint( $field_object->form_id ); if ( isset( $values['form_key'] ) ) { return $values['id'] ?? $form_id; } - $parent_form_id = FrmDb::get_var( 'frm_forms', array( 'id' => $form_id ), 'parent_form_id' ); + $parent_form_id = absint( FrmDb::get_var( 'frm_forms', array( 'id' => $form_id ), 'parent_form_id' ) ); return $parent_form_id ? $parent_form_id : $form_id; }