$params['contact_sub_type'] = 'null';
}
- // Fixed contact source.
- if (isset($params['contact_source'])) {
- $params['source'] = $params['contact_source'];
- }
-
if (isset($params['preferred_communication_method']) && is_array($params['preferred_communication_method'])) {
CRM_Utils_Array::formatArrayKeys($params['preferred_communication_method']);
$contact->preferred_communication_method = CRM_Utils_Array::implodePadded($params['preferred_communication_method']);
unset($params['preferred_communication_method']);
}
+ $defaults = ['source' => CRM_Utils_Array::value('contact_source', $params)];
+ if ($params['contact_type'] === 'Organization' && isset($params['organization_name'])) {
+ $defaults['display_name'] = $params['organization_name'];
+ $defaults['sort_name'] = $params['organization_name'];
+ }
+ if ($params['contact_type'] === 'Household' && isset($params['household_name'])) {
+ $defaults['display_name'] = $params['household_name'];
+ $defaults['sort_name'] = $params['household_name'];
+ }
+ $params = array_merge($defaults, $params);
+
$allNull = $contact->copyValues($params);
$contact->id = CRM_Utils_Array::value('contact_id', $params);
if ($contact->contact_type == 'Individual') {
$allNull = FALSE;
-
+ // @todo allow the lines below to be overridden by input or hooks & add tests,
+ // as has been done for households and organizations.
// Format individual fields.
CRM_Contact_BAO_Individual::format($params, $contact);
}
- elseif ($contact->contact_type == 'Household') {
- if (isset($params['household_name'])) {
- $allNull = FALSE;
- $contact->display_name = $contact->sort_name = CRM_Utils_Array::value('household_name', $params, '');
- }
- }
- elseif ($contact->contact_type == 'Organization') {
- if (isset($params['organization_name'])) {
- $allNull = FALSE;
- $contact->display_name = $contact->sort_name = CRM_Utils_Array::value('organization_name', $params, '');
- }
- }
+
if (strlen($contact->display_name) > 128) {
$contact->display_name = substr($contact->display_name, 0, 128);
}