* @param string $entity
* @param string $action
*
+ * @throws API_Exception
* @return array $options options extracted from params
*/
function _civicrm_api3_get_options_from_params(&$params, $queryObject = FALSE, $entity = '', $action = '') {
/**
* Converts an DAO object to an array
*
- * @param object $dao (reference )object to convert
+ * @param object $dao (reference )object to convert
* @param null $params
* @param bool $uniqueFields
* @param string $entity
*
+ * @param bool $autoFind
+ *
* @return array
*
* @params array of arrays (key = id) of array of fields
/**
* Function to do a 'standard' api create - when the api is only doing a $bao::create then use this
+ *
* @param string $bao_name Name of BAO Class
* @param array $params parameters passed into the api call
* @param string $entity Entity - pass in if entity is non-standard & required $ids array
+ *
+ * @throws API_Exception
* @return array
*/
function _civicrm_api3_basic_create($bao_name, &$params, $entity = NULL) {
$groupTree = CRM_Core_BAO_CustomGroup::formatGroupTree($groupTree, 1, CRM_Core_DAO::$_nullObject);
$customValues = array();
CRM_Core_BAO_CustomGroup::setDefaults($groupTree, $customValues);
+ $fieldInfo = array();
+ foreach ($groupTree as $set) {
+ $fieldInfo += $set['fields'];
+ }
if (!empty($customValues)) {
foreach ($customValues as $key => $val) {
- if (strstr($key, '_id')) {
- $idkey = substr($key, 0, -3);
- $returnArray['custom_' . (CRM_Core_BAO_CustomField::getKeyID($idkey) . "_id")] = $val;
- $returnArray[$key] = $val;
- }
- else {
- // per standard - return custom_fieldID
- $returnArray['custom_' . (CRM_Core_BAO_CustomField::getKeyID($key))] = $val;
+ // per standard - return custom_fieldID
+ $id = CRM_Core_BAO_CustomField::getKeyID($key);
+ $returnArray['custom_' . $id] = $val;
+
+ //not standard - but some api did this so guess we should keep - cheap as chips
+ $returnArray[$key] = $val;
- //not standard - but some api did this so guess we should keep - cheap as chips
- $returnArray[$key] = $val;
+ // Shim to restore legacy behavior of ContactReference custom fields
+ if (!empty($fieldInfo[$id]) && $fieldInfo[$id]['data_type'] == 'ContactReference') {
+ $returnArray['custom_' . $id . '_id'] = $returnArray[$key . '_id'] = $val;
+ $returnArray['custom_' . $id] = $returnArray[$key] = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $val, 'sort_name');
}
}
}
* @internal param array $fieldinfo array of fields from getfields function
*/
function _civicrm_api3_validate_integer(&$params, &$fieldName, &$fieldInfo, $entity) {
- //if fieldname exists in params
if (!empty($params[$fieldName])) {
// if value = 'user_contact_id' (or similar), replace value with contact id
if (!is_numeric($params[$fieldName]) && is_scalar($params[$fieldName])) {