X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FBAO%2FAddress.php;h=14367b8a03a2eddfad15fee0b637dd958e7f7c5f;hb=b48c14670e80c874b5df3bf0875b1bc9007a60b1;hp=5beb1e53ed5c1ca67a1c5d006748d931c6016a8e;hpb=df2b72ed98aa5ea61a237feaa8fe9529670db5ee;p=civicrm-core.git diff --git a/CRM/Core/BAO/Address.php b/CRM/Core/BAO/Address.php index 5beb1e53ed..14367b8a03 100644 --- a/CRM/Core/BAO/Address.php +++ b/CRM/Core/BAO/Address.php @@ -135,8 +135,9 @@ class CRM_Core_BAO_Address extends CRM_Core_DAO_Address { * @return CRM_Core_BAO_Address|null */ public static function add(&$params, $fixAddress) { - static $customFields = NULL; + $address = new CRM_Core_DAO_Address(); + $checkPermissions = isset($params['check_permissions']) ? $params['check_permissions'] : TRUE; // fixAddress mode to be done if ($fixAddress) { @@ -150,20 +151,20 @@ class CRM_Core_BAO_Address extends CRM_Core_DAO_Address { if (is_numeric(CRM_Utils_Array::value('is_primary', $params)) || empty($params['id'])) { CRM_Core_BAO_Block::handlePrimary($params, get_class()); } - $config = CRM_Core_Config::singleton(); + $address->copyValues($params); $address->save(); if ($address->id) { - if (!$customFields) { - $customFields = CRM_Core_BAO_CustomField::getFields('Address', FALSE, TRUE); - } + $customFields = CRM_Core_BAO_CustomField::getFields('Address', FALSE, TRUE, NULL, NULL, FALSE, FALSE, $checkPermissions); + if (!empty($customFields)) { $addressCustom = CRM_Core_BAO_CustomField::postProcess($params, $address->id, 'Address', - TRUE + FALSE, + $checkPermissions ); } if (!empty($addressCustom)) { @@ -342,9 +343,7 @@ class CRM_Core_BAO_Address extends CRM_Core_DAO_Address { $config = CRM_Core_Config::singleton(); - $asp = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::ADDRESS_STANDARDIZATION_PREFERENCES_NAME, - 'address_standardization_provider' - ); + $asp = Civi::settings()->get('address_standardization_provider'); // clean up the address via USPS web services if enabled if ($asp === 'USPS' && $params['country_id'] == 1228 @@ -379,8 +378,11 @@ class CRM_Core_BAO_Address extends CRM_Core_DAO_Address { } } + // check if geocode should be skipped (can be forced with an optional parameter through the api) + $skip_geocode = (isset($params['skip_geocode']) && $params['skip_geocode']) ? TRUE : FALSE; + // add latitude and longitude and format address if needed - if (!empty($config->geocodeMethod) && ($config->geocodeMethod != 'CRM_Utils_Geocode_OpenStreetMaps') && empty($params['manual_geo_code'])) { + if (!$skip_geocode && !empty($config->geocodeMethod) && ($config->geocodeMethod != 'CRM_Utils_Geocode_OpenStreetMaps') && empty($params['manual_geo_code'])) { $class = $config->geocodeMethod; $class::format($params); } @@ -1039,7 +1041,7 @@ SELECT is_primary, 'first_name' => $rows[$rowID]['first_name'], 'individual_prefix' => $rows[$rowID]['individual_prefix'], ); - $format = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'display_name_format'); + $format = Civi::settings()->get('display_name_format'); $firstNameWithPrefix = CRM_Utils_Address::format($formatted, $format, FALSE, FALSE, TRUE); $firstNameWithPrefix = trim($firstNameWithPrefix);