X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=api%2Fv3%2FContact.php;h=4921d0b92eac299efbae83bf5a91370de93888cb;hb=67cfa3334fa2782fbe827ee1036e87d78c24b2f8;hp=56f49a6bf766c0a8ff3952a3382720fd3aa60116;hpb=db77292ab24a13bf07f96dbbbc596af40997f12f;p=civicrm-core.git diff --git a/api/v3/Contact.php b/api/v3/Contact.php index 56f49a6bf7..4921d0b92e 100644 --- a/api/v3/Contact.php +++ b/api/v3/Contact.php @@ -325,7 +325,7 @@ function _civicrm_api3_contact_check_params( &$params, $dupeCheck = true, $dupeE $dedupeParams['check_permission'] = $params['check_permission']; } - $ids = CRM_Dedupe_Finder::dupesByParams($dedupeParams, $params['contact_type'], 'Strict', array()); + $ids = CRM_Dedupe_Finder::dupesByParams($dedupeParams, $params['contact_type'], 'Unsupervised', array()); if (count($ids) >0) { throw new API_Exception("Found matching contacts: ". implode(',',$ids),"duplicate",array("ids"=>$ids)); @@ -923,7 +923,9 @@ function _civicrm_api3_contact_getlist_params(&$request) { if(!in_array($searchField, $list)) { $list[] = $searchField; } - $request['params']['return'] = $list; + $request['description_field'] = $list; + $list[] = 'contact_type'; + $request['params']['return'] = array_unique(array_merge($list, $request['extra'])); $request['params']['options']['sort'] = 'sort_name'; // Contact api doesn't support array(LIKE => 'foo') syntax $request['params'][$request['search_field']] = $request['input']; @@ -940,21 +942,36 @@ function _civicrm_api3_contact_getlist_params(&$request) { function _civicrm_api3_contact_getlist_output($result, $request) { $output = array(); if (!empty($result['values'])) { + $addressFields = array_intersect(array('street_address', 'city', 'state_province', 'country'), $request['params']['return']); foreach ($result['values'] as $row) { $data = array( 'id' => $row[$request['id_field']], 'label' => $row[$request['label_field']], + 'description' => array(), ); - $description = array(); - foreach ($request['params']['return'] as $item) { - if (!strpos($item, '_name') && !empty($row[$item])) { - $description[] = $row[$item]; + foreach ($request['description_field'] as $item) { + if (!strpos($item, '_name') && !in_array($item, $addressFields) && !empty($row[$item])) { + $data['description'][] = $row[$item]; } } - $data['description'] = implode(' :: ', $description); + $address = array(); + foreach($addressFields as $item) { + if (!empty($row[$item])) { + $address[] = $row[$item]; + } + } + if ($address) { + $data['description'][] = implode(' ', $address); + } if (!empty($request['image_field'])) { $data['image'] = isset($row[$request['image_field']]) ? $row[$request['image_field']] : ''; - }; + } + else { + $data['icon_class'] = $row['contact_type']; + } + foreach ($request['extra'] as $field) { + $data['extra'][$field] = isset($row[$field]) ? $row[$field] : NULL; + } $output[] = $data; } }