}
$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
$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
+ }
+ }
}