diff --git a/classes/controllers/FrmFieldsController.php b/classes/controllers/FrmFieldsController.php index 48f175d960..49812dc965 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 = $values['id'] ?? $field_object->form_id; + $field_object->parent_form_id = self::get_form_id_from_field_or_form( $field_object, $values ); $field = FrmFieldsHelper::setup_edit_vars( $field_object ); } @@ -205,6 +205,28 @@ 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_form_id_from_field_or_form( $field_object, $values ) { + $form_id = absint( $field_object->form_id ); + + if ( isset( $values['form_key'] ) ) { + return $values['id'] ?? $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; + } + /** * @since 3.0 *