From 9ca817edd0c657da02083e3d9b20a19d5c7a8790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20Garc=C3=ADa?= <lucas@codeccoop.org> Date: Tue, 10 Oct 2023 14:20:25 +0200 Subject: [PATCH] feat: soruce_xml_id as optional form field --- includes/submissions.php | 14 +++++++------- includes/webhooks.php | 8 +++++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/includes/submissions.php b/includes/submissions.php index 6994976..440586c 100644 --- a/includes/submissions.php +++ b/includes/submissions.php @@ -5,9 +5,9 @@ */ function wpct_crm_forms_parse_form_entry($entry, $form) { - $form_vals = array( + $form_vals = [ 'entry_id' => $entry['id'] - ); + ]; foreach ($form['fields'] as $field) { if ($field->type === 'consent') continue; @@ -92,10 +92,10 @@ function wpct_crm_forms_cleanup_empties($form_vals) */ function wpct_crm_forms_get_submission_payload($form_vals) { - $payload = array( + $payload = [ 'name' => $form_vals['source_xml_id'] . ' submission: ' . $form_vals['entry_id'], - 'metadata' => array() - ); + 'metadata' => [] + ]; foreach ($form_vals as $key => $val) { if ($key == 'company_id') { @@ -106,10 +106,10 @@ function wpct_crm_forms_get_submission_payload($form_vals) $payload['source_xml_id'] = $val; } - $payload['metadata'][] = array( + $payload['metadata'][] = [ 'key' => $key, 'value' => $val - ); + ]; } return $payload; diff --git a/includes/webhooks.php b/includes/webhooks.php index 6b53c24..b7dd093 100644 --- a/includes/webhooks.php +++ b/includes/webhooks.php @@ -3,7 +3,13 @@ add_action('gform_after_submission', 'wpct_crm_forms_api_submissions', 10, 2); function wpct_crm_forms_api_submissions($entry, $form) { $form_vals = wpct_crm_forms_parse_form_entry($entry, $form); - if (!isset($form_vals['source_xml_id'])) throw new Exception('Error Processing Request', 400); + + if (!isset($form_vals['source_xml_id'])) { + $form_id = rgat($form, 'id'); + $form_title = rgar($form, 'title'); + $form_vals['source_xml_id'] = "{$form_id}_{$form_title}"; + } + $submission_payload = apply_filters('wpct_crm_forms_prepare_submission', $form_vals); $response = wpct_oc_post_odoo('/api/private/crm-lead', $submission_payload); -- GitLab