From 9d665938174ab39833338b63d05d3154e7135709 Mon Sep 17 00:00:00 2001 From: eileen Date: Fri, 23 Aug 2013 12:32:20 +1200 Subject: [PATCH] CRM-13179 use api function to get billing defaults in a sharable way --- CRM/Contribute/Form/Contribution/Main.php | 29 ++--------------------- CRM/Core/Form.php | 20 ++++++++++++++++ 2 files changed, 22 insertions(+), 27 deletions(-) diff --git a/CRM/Contribute/Form/Contribution/Main.php b/CRM/Contribute/Form/Contribution/Main.php index f28cccee90..3c497b9254 100644 --- a/CRM/Contribute/Form/Contribution/Main.php +++ b/CRM/Contribute/Form/Contribution/Main.php @@ -188,33 +188,8 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } $fields[$name] = 1; } - - $names = array( - 'first_name', 'middle_name', 'last_name', "street_address-{$this->_bltID}", "city-{$this->_bltID}", - "postal_code-{$this->_bltID}", "country_id-{$this->_bltID}", "state_province_id-{$this->_bltID}", - ); - foreach ($names as $name) { - $fields[$name] = 1; - } - $fields["state_province-{$this->_bltID}"] = 1; - $fields["country-{$this->_bltID}"] = 1; - $fields["email-{$this->_bltID}"] = 1; - $fields['email-Primary'] = 1; - - CRM_Core_BAO_UFGroup::setProfileDefaults($contactID, $fields, $this->_defaults); - - // use primary email address if billing email address is empty - if (empty($this->_defaults["email-{$this->_bltID}"]) && - !empty($this->_defaults['email-Primary']) - ) { - $this->_defaults["email-{$this->_bltID}"] = $this->_defaults['email-Primary']; - } - - foreach ($names as $name) { - if (!empty($this->_defaults[$name])) { - $this->_defaults['billing_' . $name] = $this->_defaults[$name]; - } - } + $billingDefaults = $this->getProfileDefaults('Billing', $contactID); + $this->_defaults = array_merge($this->_defaults, $billingDefaults); } //set custom field defaults set by admin if value is not set diff --git a/CRM/Core/Form.php b/CRM/Core/Form.php index 9baa88a8d4..fe80bfc03f 100644 --- a/CRM/Core/Form.php +++ b/CRM/Core/Form.php @@ -1434,5 +1434,25 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $this->addAutoSelector($profiles); } } + + /** + * Set default values on form for given contact (or no contact defaults) + * @param mixed $profile_id (can be id, or profile name) + * @param integer $contactID + */ + function getProfileDefaults($profile_id = 'Billing', $contactID = NULL) { + try{ + $defaults = civicrm_api3('profile', 'getsingle', array( + 'profile_id' => (array) $profile_id, + 'contact_id' => $contactID, + )); + return $defaults; + } + catch (Exception $e) { + echo $e->getMessage(); + // the try catch block gives us silent failure -not 100% sure this is a good idea + // as silent failures are often worse than noisy ones + } + } } -- 2.25.1