if(!in_array($searchField, $list)) {
$list[] = $searchField;
}
+ $request['description_field'] = $list;
$list[] = 'contact_type';
- $request['params']['return'] = $list;
+ $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'];
'label' => $row[$request['label_field']],
'description' => array(),
);
- foreach ($request['params']['return'] as $item) {
- if (!strpos($item, '_name') && $item != 'contact_type' && !in_array($item, $addressFields) && !empty($row[$item])) {
+ foreach ($request['description_field'] as $item) {
+ if (!strpos($item, '_name') && !in_array($item, $addressFields) && !empty($row[$item])) {
$data['description'][] = $row[$item];
}
}
else {
$data['icon_class'] = $row['contact_type'];
}
+ foreach ($request['extra'] as $field) {
+ $data['extra'][$field] = isset($row[$field]) ? $row[$field] : NULL;
+ }
$output[] = $data;
}
}
* @param $request array
*/
function _civicrm_api3_event_getlist_params(&$request) {
- $request['params']['return'] = array('start_date', 'event_type_id', 'title', 'summary');
+ $fieldsToReturn = array('start_date', 'event_type_id', 'title', 'summary');
+ $request['params']['return'] = array_unique(array_merge($fieldsToReturn, $request['extra']));
$request['params']['options']['sort'] = 'start_date DESC';
$request['params'] += array(
'is_template' => 0,
if (!empty($row['summary'])) {
$data['description'][] = $row['summary'];
}
+ foreach ($request['extra'] as $field) {
+ $data['extra'][$field] = isset($row[$field]) ? $row[$field] : NULL;
+ }
$output[] = $data;
}
}
'input' => '',
'image_field' => NULL,
'id_field' => $entity == 'option_value' ? 'value' : 'id',
+ 'description_field' => array(),
'params' => array(),
+ 'extra' => array(),
);
// Find main field from meta
foreach (array('sort_name', 'title', 'label', 'name') as $field) {
break;
}
}
+ // Find fields to be used for the description
foreach (array('description') as $field) {
if (isset($fields[$field])) {
- $defaults['description_field'] = $field;
- break;
+ $defaults['description_field'][] = $field;
}
}
$resultsPerPage = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'search_autocomplete_count', NULL, 10);
$fieldsToReturn[] = $request['image_field'];
}
if (!empty($request['description_field'])) {
- $fieldsToReturn[] = $request['description_field'];
+ $fieldsToReturn = array_merge($fieldsToReturn, (array) $request['description_field']);
}
- $request['params']['return'] = $fieldsToReturn;
+ $request['params']['return'] = array_unique(array_merge($fieldsToReturn, $request['extra']));
}
/**
'label' => $row[$request['label_field']],
);
if (!empty($request['description_field'])) {
- $data['description'] = !empty($row[$request['description_field']]) ? array($row[$request['description_field']]) : NULL;
+ $data['description'] = array();
+ foreach ((array) $request['description_field'] as $field) {
+ if (!empty($row[$field])) {
+ $data['description'][] = $row[$field];
+ }
+ }
};
if (!empty($request['image_field'])) {
$data['image'] = isset($row[$request['image_field']]) ? $row[$request['image_field']] : '';
- };
+ }
+ foreach ($request['extra'] as $field) {
+ $data['extra'][$field] = isset($row[$field]) ? $row[$field] : NULL;
+ }
$output[] = $data;
}
}
$description = "Demonstrates use of api.getlist for autocomplete and quicksearch applications";
$params = array(
'input' => $this->tag['name'],
+ 'extra' => array('used_for')
);
- $result = $this->callAPIAndDocument('tag', 'getlist', $params, __FUNCTION__, __FILE__);
+ $result = $this->callAPIAndDocument('tag', 'getlist', $params, __FUNCTION__, __FILE__, $description);
$this->assertEquals($this->tag['id'], $result['values'][0]['id'], 'In line ' . __LINE__);
- $this->assertEquals($this->tag['description'], $result['values'][0]['description'], 'In line ' . __LINE__);
+ $this->assertEquals($this->tag['description'], $result['values'][0]['description'][0], 'In line ' . __LINE__);
+ $this->assertEquals($this->tag['used_for'], $result['values'][0]['extra']['used_for'], 'In line ' . __LINE__);
}
}