*/
/**
- * File for CiviCRM APIv3 pseudoconstants
+ * CiviCRM APIv3 pseudoconstants - DEPRECATED
*
* @package CiviCRM_APIv3
* @subpackage API_Constant
*/
/**
- * Generic file to retrieve all the constants and
- * pseudo constants used in CiviCRM
+ * This api is DEPRECATED as of CiviCRM 4.4.
+ * It's recommended to use the api getoptions action instead
*
* @param string Name of a public static method of
* CRM_Core_PseudoContant: one of
/**
* API wrapper for getoptions function
*
- * @param array $apiRequest api request as an array. Keys are
+ * @param array $apiRequest api request as an array.
*
* @return array of results
*/
function civicrm_api3_generic_getoptions($apiRequest) {
- $field = $apiRequest['params']['field'];
- $getFieldsArray = array(
- 'version' => 3,
- 'action' => 'create',
- 'options' => array('get_options' => $field),
- );
- // First try to retrieve the options from getfields
- $result = civicrm_api($apiRequest['entity'], 'getfields', $getFieldsArray);
- if (!isset($result['values'][$field]) && isset($result['values'][$field . '_id'])) {
- $field = $field . '_id';
- }
- if (!empty($result['values'][$field]['options'])) {
- return civicrm_api3_create_success($result['values'][$field]['options']);
- }
- // If that didn't work, try the constant api
- if (substr($field, -3) == '_id') {
- // Convert foo_id to just plain foo
- $field = substr($field, 0, -3);
- }
- $params = array('name' => _civicrm_api_get_camel_name($field));
- $entity = strtolower($apiRequest['entity']);
- if ($entity == 'contribution') {
- $params['class'] = 'CRM_Contribute_PseudoConstant';
- }
- elseif ($entity == 'event' || $entity == 'participant') {
- $params['class'] = 'CRM_Event_PseudoConstant';
- }
- elseif (strpos($entity, 'membership') === 0) {
- $params['class'] = 'CRM_Member_PseudoConstant';
+ $daoName = _civicrm_api3_get_DAO($apiRequest['entity']);
+ $options = $daoName::buildOptions($apiRequest['params']['field']);
+ if ($options === FALSE) {
+ return civicrm_api3_create_error("The field '{$apiRequest['params']['field']}' either doesn't exist or has no associated option list.");
}
- require_once 'api/v3/Constant.php';
- return civicrm_api3_constant_get($params);
+ return civicrm_api3_create_success($options);
}
/**