* @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) {
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)) {
$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
}
}
+ // 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);
}
'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);
/**
* Call common delete function.
+ *
+ * @param int $id
+ *
+ * @return bool
*/
public static function del($id) {
return CRM_Contact_BAO_Contact::deleteObjectWithPrimary('Address', $id);
switch ($fieldName) {
// Filter state_province list based on chosen country or site defaults
case 'state_province_id':
+ case 'state_province_name':
+ case 'state_province':
+ // change $fieldName to DB specific names.
+ $fieldName = 'state_province_id';
if (empty($props['country_id'])) {
$config = CRM_Core_Config::singleton();
if (!empty($config->provinceLimit)) {
// Filter country list based on site defaults
case 'country_id':
+ case 'country':
+ // change $fieldName to DB specific names.
+ $fieldName = 'country_id';
if ($context != 'get' && $context != 'validate') {
$config = CRM_Core_Config::singleton();
if (!empty($config->countryLimit) && is_array($config->countryLimit)) {
// Not a real field in this entity
case 'world_region':
+ case 'worldregion':
+ case 'worldregion_id':
return CRM_Core_PseudoConstant::worldRegion();
}
return CRM_Core_PseudoConstant::get(__CLASS__, $fieldName, $params, $context);