diff --git a/projects/packages/forms/src/contact-form/class-feedback.php b/projects/packages/forms/src/contact-form/class-feedback.php index 474ec2acba86c..2b287de1426e3 100644 --- a/projects/packages/forms/src/contact-form/class-feedback.php +++ b/projects/packages/forms/src/contact-form/class-feedback.php @@ -625,7 +625,10 @@ public function get_compiled_fields( $context = 'default', $array_shape = 'all' $compiled_fields[ $field->get_key() ] = $field->get_render_value( $context ); break; case 'label-value': - $compiled_fields[ $field->get_label( $context, $count_field_labels[ $label ] ) ] = $field->get_render_value( $context ); + $compiled_fields[ $field->get_label( $context, $count_field_labels[ $label ] ) ] = $field->get_render_value( $context ); + break; + case 'id-value': + $compiled_fields[ $field->get_form_field_id() ] = $field->get_render_value( $context ); break; } } diff --git a/projects/packages/forms/src/service/class-form-webhooks.php b/projects/packages/forms/src/service/class-form-webhooks.php index 3f8baa193f70f..5d599f0cf06eb 100644 --- a/projects/packages/forms/src/service/class-form-webhooks.php +++ b/projects/packages/forms/src/service/class-form-webhooks.php @@ -112,7 +112,7 @@ public function send_webhooks( $post_id, $fields, $is_spam, $entry_values ) { // return; } - $form_data = $this->get_form_data( $feedback ); + $form_data = $feedback->get_compiled_fields( 'webhook', 'id-value' ); // Iterate through each webhook and send the request foreach ( $webhooks as $webhook ) { @@ -250,19 +250,4 @@ private function send_webhook( $data, $webhook ) { return wp_remote_request( $url, $args ); } - - /** - * Gather fields key/value pairs from the Feedback object - * - * @param Feedback $feedback The Feedback instance containing submitted form data. - * @return array The form data key/value pairs. - */ - private function get_form_data( $feedback ) { - $fields = array(); - foreach ( $feedback->get_fields() as $field ) { - $fields[ $field->get_form_field_id() ] = $field->get_value(); - } - - return $fields; - } } diff --git a/projects/packages/forms/tests/php/contact-form/Feedback_Test.php b/projects/packages/forms/tests/php/contact-form/Feedback_Test.php index 0e2bbf411e486..bb4146a734942 100644 --- a/projects/packages/forms/tests/php/contact-form/Feedback_Test.php +++ b/projects/packages/forms/tests/php/contact-form/Feedback_Test.php @@ -1867,6 +1867,11 @@ public static function get_compiled_fields_data_provider() { ), 'message' => 'Compiled fields should return only labels as indexed array.', ), + 'id-value_format' => array( + 'format' => 'id-value', + 'expected' => array(), // Rebuilt dynamically in the test with actual form_id + 'message' => 'Compiled fields should return field IDs mapped to values.', + ), ); } @@ -1906,6 +1911,17 @@ public function test_get_compiled_fields_shapes( $format, $expected, $message ) // Test the specified format $compiled_fields = $response->get_compiled_fields( 'default', $format ); + // For id-value format, rebuild expected with actual form_id, there + // was no way of passing the form_id to the data provider. + if ( 'id-value' === $format ) { + $expected = array( + 'g' . $form_id . '-name' => $test_name, + 'g' . $form_id . '-email' => $test_email, + 'g' . $form_id . '-website' => $test_website, + 'g' . $form_id . '-message' => $test_message, + ); + } + $this->assertEquals( $expected, $compiled_fields, $message ); }