From 90f27f70c7b09163da30f3359fe037a55601debe Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Thu, 6 Jun 2024 15:08:44 +0200 Subject: [PATCH 1/6] improve newsletter subcription result values --- api/v3/TwingleDonation/Submit.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/api/v3/TwingleDonation/Submit.php b/api/v3/TwingleDonation/Submit.php index daceb36..379def0 100644 --- a/api/v3/TwingleDonation/Submit.php +++ b/api/v3/TwingleDonation/Submit.php @@ -526,7 +526,7 @@ function civicrm_api3_twingle_donation_Submit($params) { // If usage of double opt-in is selected, use MailingEventSubscribe.create // to add contact to newsletter groups defined in the profile - $result_values['newsletter']['newsletter_double_opt_in'] + $result_values['newsletter_double_opt_in'] = (bool) $profile->getAttribute('newsletter_double_opt_in') ? 'true' : 'false'; @@ -555,7 +555,7 @@ function civicrm_api3_twingle_donation_Submit($params) { ] )['visibility'] == 'Public Pages'; if (!in_array($group_id, $group_memberships, FALSE) && $is_public_group) { - $result_values['newsletter'][][$group_id] = civicrm_api3( + $result = civicrm_api3( 'MailingEventSubscribe', 'create', [ @@ -564,9 +564,12 @@ function civicrm_api3_twingle_donation_Submit($params) { 'contact_id' => $contact_id, ] ); + $subscription = CRM_Utils_Array::first($result['values']); + $subscription['group_id'] = $group_id; + $result_values['newsletter_subscriptions'][] = $subscription; } elseif ($is_public_group) { - $result_values['newsletter'][] = $group_id; + $result_values['newsletter_group_ids'][] = $group_id; } } // If requested, add contact to newsletter groups defined in the profile. @@ -584,8 +587,7 @@ function civicrm_api3_twingle_donation_Submit($params) { 'contact_id' => $contact_id, ] ); - - $result_values['newsletter'][] = $group_id; + $result_values['newsletter_group_ids'][] = $group_id; } } From 67283fa1a78d3bc77103e8a2bd000662fb3162ea Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Thu, 6 Jun 2024 15:53:44 +0200 Subject: [PATCH 2/6] improve donation receipt result values --- api/v3/TwingleDonation/Submit.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/api/v3/TwingleDonation/Submit.php b/api/v3/TwingleDonation/Submit.php index 379def0..5ce8e84 100644 --- a/api/v3/TwingleDonation/Submit.php +++ b/api/v3/TwingleDonation/Submit.php @@ -618,8 +618,7 @@ function civicrm_api3_twingle_donation_Submit($params) { 'group_id' => $group_id, 'contact_id' => $organisation_id ?? $contact_id, ]); - - $result_values['donation_receipt'][] = $group_id; + $result_values['donation_receipt_group_ids'][] = $group_id; } } From c0af2e16ab3ad10b725dafbf5024d972b7281429 Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Thu, 6 Jun 2024 15:54:13 +0200 Subject: [PATCH 3/6] improve SEPA mandate result values --- api/v3/TwingleDonation/Submit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/v3/TwingleDonation/Submit.php b/api/v3/TwingleDonation/Submit.php index 5ce8e84..43cf7b8 100644 --- a/api/v3/TwingleDonation/Submit.php +++ b/api/v3/TwingleDonation/Submit.php @@ -725,7 +725,7 @@ function civicrm_api3_twingle_donation_Submit($params) { // Create the mandate. $mandate = civicrm_api3('SepaMandate', 'createfull', $mandate_data); - $result_values['sepa_mandate'] = $mandate['values']; + $result_values['sepa_mandate'] = CRM_Utils_Array::first($mandate['values']); } else { // Set financial type depending on donation rhythm. This applies for From ff24256bc17fbc3c063c4623a961092f401e655b Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Thu, 6 Jun 2024 15:54:49 +0200 Subject: [PATCH 4/6] improve contribution result values --- api/v3/TwingleDonation/Submit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/v3/TwingleDonation/Submit.php b/api/v3/TwingleDonation/Submit.php index 43cf7b8..c8ef884 100644 --- a/api/v3/TwingleDonation/Submit.php +++ b/api/v3/TwingleDonation/Submit.php @@ -822,7 +822,7 @@ function civicrm_api3_twingle_donation_Submit($params) { } } - $result_values['contribution'] = $contribution['values']; + $result_values['contribution'] = CRM_Utils_Array::first($contribution['values']); } // MEMBERSHIP CREATION From 96d0e5fbec5ad4953f8e1598713475aed0126bec Mon Sep 17 00:00:00 2001 From: Jens Schuppe Date: Thu, 13 Jun 2024 13:24:34 +0200 Subject: [PATCH 5/6] Code style --- api/v3/TwingleDonation/Submit.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/api/v3/TwingleDonation/Submit.php b/api/v3/TwingleDonation/Submit.php index c8ef884..cef2e33 100644 --- a/api/v3/TwingleDonation/Submit.php +++ b/api/v3/TwingleDonation/Submit.php @@ -535,6 +535,7 @@ function civicrm_api3_twingle_donation_Submit($params) { && (bool) ($params['newsletter'] ?? FALSE) && is_array($groups = $profile->getAttribute('newsletter_groups')) ) { + // TODO: Ensure the values being integers. $group_memberships = array_column( civicrm_api3( 'GroupContact', @@ -564,7 +565,7 @@ function civicrm_api3_twingle_donation_Submit($params) { 'contact_id' => $contact_id, ] ); - $subscription = CRM_Utils_Array::first($result['values']); + $subscription = reset($result['values']); $subscription['group_id'] = $group_id; $result_values['newsletter_subscriptions'][] = $subscription; } @@ -725,7 +726,7 @@ function civicrm_api3_twingle_donation_Submit($params) { // Create the mandate. $mandate = civicrm_api3('SepaMandate', 'createfull', $mandate_data); - $result_values['sepa_mandate'] = CRM_Utils_Array::first($mandate['values']); + $result_values['sepa_mandate'] = reset($mandate['values']); } else { // Set financial type depending on donation rhythm. This applies for @@ -798,12 +799,15 @@ function civicrm_api3_twingle_donation_Submit($params) { } $contribution = civicrm_api3('Contribution', 'create', $contribution_data); - if ($contribution['is_error']) { + /** @phpstan-var array{'values': array>, 'is_error'?: string} $contribution */ + if ((bool) ($contribution['is_error'] ?? FALSE)) { throw new CRM_Core_Exception( E::ts('Could not create contribution'), 'api_error' ); } + $contribution = reset($contribution['values']); + /** @phpstan-var array{'id': int} $contribution */ // Add notes to the contribution. /** @phpstan-var array $contribution_note_mappings */ @@ -816,13 +820,13 @@ function civicrm_api3_twingle_donation_Submit($params) { ) { Note::create(FALSE) ->addValue('entity_table', 'civicrm_contribution') - ->addValue('entity_id', reset($contribution['values'])['id']) + ->addValue('entity_id', $contribution['id']) ->addValue('note', reset($params[$target])) ->execute(); } } - $result_values['contribution'] = CRM_Utils_Array::first($contribution['values']); + $result_values['contribution'] = $contribution; } // MEMBERSHIP CREATION From 07435ad9976756dae2edeaa19bd2a902dcb59fbb Mon Sep 17 00:00:00 2001 From: Marc Michalsky Date: Thu, 13 Jun 2024 13:34:34 +0200 Subject: [PATCH 6/6] remove unnecessary `reset()` for $params[$target] --- api/v3/TwingleDonation/Submit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/v3/TwingleDonation/Submit.php b/api/v3/TwingleDonation/Submit.php index cef2e33..be27fc8 100644 --- a/api/v3/TwingleDonation/Submit.php +++ b/api/v3/TwingleDonation/Submit.php @@ -821,7 +821,7 @@ function civicrm_api3_twingle_donation_Submit($params) { Note::create(FALSE) ->addValue('entity_table', 'civicrm_contribution') ->addValue('entity_id', $contribution['id']) - ->addValue('note', reset($params[$target])) + ->addValue('note', $params[$target]) ->execute(); } }