示例#1
0
/**
 * 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;
}