From a2b50fd4d3d900b69fc1fbc50125672230281cfd Mon Sep 17 00:00:00 2001 From: "B. Endres" Date: Thu, 30 Jan 2020 07:07:20 +0100 Subject: [PATCH] [#17] pass-trough campaign --- CRM/Twingle/Form/Profile.php | 2 +- CRM/Twingle/Submission.php | 10 +++++++++- api/v3/TwingleDonation/Submit.php | 6 ++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/CRM/Twingle/Form/Profile.php b/CRM/Twingle/Form/Profile.php index 2704ea8..22ea97c 100644 --- a/CRM/Twingle/Form/Profile.php +++ b/CRM/Twingle/Form/Profile.php @@ -311,7 +311,7 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form { $this->add( 'select', // field type 'campaign', // field name - E::ts('Assign donation to campaign'), // field label + E::ts('Campaign (e.g. for donation)'), // field label array('' => E::ts('- none -')) + static::getCampaigns(), // list of options FALSE, // is not required array('class' => 'crm-select2 huge') diff --git a/CRM/Twingle/Submission.php b/CRM/Twingle/Submission.php index 50c7204..f64bc69 100644 --- a/CRM/Twingle/Submission.php +++ b/CRM/Twingle/Submission.php @@ -124,6 +124,8 @@ class CRM_Twingle_Submission { * The contact type to look for/to create. * @param array $contact_data * Data to use for contact lookup/to create a contact with. + * @param CRM_Twingle_Profile $profile + * Profile used for this process * * @return int | NULL * The ID of the matching/created contact, or NULL if no matching contact @@ -131,12 +133,18 @@ class CRM_Twingle_Submission { * @throws \CiviCRM_API3_Exception * When invalid data was given. */ - public static function getContact($contact_type, $contact_data) { + public static function getContact($contact_type, $contact_data, $profile) { // If no parameters are given, do nothing. if (empty($contact_data)) { return NULL; } + // add campaign + $campaign_id = (int) $profile->getAttribute('campaign'); + if ($campaign_id) { + $contact_data['campaign_id'] = $campaign_id; + } + // Prepare values: country. if (!empty($contact_data['country'])) { if (is_numeric($contact_data['country'])) { diff --git a/api/v3/TwingleDonation/Submit.php b/api/v3/TwingleDonation/Submit.php index 2215ed8..c4eee40 100644 --- a/api/v3/TwingleDonation/Submit.php +++ b/api/v3/TwingleDonation/Submit.php @@ -394,7 +394,8 @@ function civicrm_api3_twingle_donation_Submit($params) { if (!$contact_id = CRM_Twingle_Submission::getContact( 'Individual', - $contact_data + $contact_data, + $profile )) { throw new CiviCRM_API3_Exception( E::ts('Individual contact could not be found or created.'), @@ -429,7 +430,8 @@ function civicrm_api3_twingle_donation_Submit($params) { } if (!$organisation_id = CRM_Twingle_Submission::getContact( 'Organization', - $organisation_data + $organisation_data, + $profile )) { throw new CiviCRM_API3_Exception( E::ts('Organisation contact could not be found or created.'),