/** * Returns fields allowable by api. * * @param $entity * String Entity to query. * @param bool $unique * Index by unique fields?. * @param array $params * * @return array */ function _civicrm_api_get_fields($entity, $unique = FALSE, &$params = array()) { $unsetIfEmpty = array('dataPattern', 'headerPattern', 'default', 'export', 'import'); $dao = _civicrm_api3_get_DAO($entity); if (empty($dao)) { return array(); } $d = new $dao(); $fields = $d->fields(); // replace uniqueNames by the normal names as the key if (empty($unique)) { foreach ($fields as $name => &$field) { //getting rid of unused attributes foreach ($unsetIfEmpty as $attr) { if (empty($field[$attr])) { unset($field[$attr]); } } if ($name == $field['name']) { continue; } if (array_key_exists($field['name'], $fields)) { $field['error'] = 'name conflict'; // it should never happen, but better safe than sorry continue; } $fields[$field['name']] = $field; $fields[$field['name']]['uniqueName'] = $name; unset($fields[$name]); } } // Translate FKClassName to the corresponding api foreach ($fields as $name => &$field) { if (!empty($field['FKClassName'])) { $FKApi = CRM_Core_DAO_AllCoreTables::getBriefName($field['FKClassName']); if ($FKApi) { $field['FKApiName'] = $FKApi; } } } $fields += _civicrm_api_get_custom_fields($entity, $params); return $fields; }
function _civicrm_api_get_fields($entity, $unique = FALSE, &$params = array()) { $unsetIfEmpty = array('dataPattern', 'headerPattern', 'default', 'export', 'import'); $dao = _civicrm_api3_get_DAO($entity); if (empty($dao)) { return array(); } $file = str_replace('_', '/', $dao) . ".php"; require_once $file; $d = new $dao(); $fields = $d->fields(); // replace uniqueNames by the normal names as the key if (empty($unique)) { foreach ($fields as $name => &$field) { //getting rid of unused attributes foreach ($unsetIfEmpty as $attr) { if (empty($field[$attr])) { unset($field[$attr]); } } if ($name == $field['name']) { continue; } if (array_key_exists($field['name'], $fields)) { $field['error'] = 'name conflict'; // it should never happen, but better safe than sorry continue; } $fields[$field['name']] = $field; $fields[$field['name']]['uniqueName'] = $name; unset($fields[$name]); } } $fields += _civicrm_api_get_custom_fields($entity, $params); return $fields; }