Skip to content
Snippets Groups Projects
Commit ee2b1c1c authored by colemanw's avatar colemanw
Browse files

Use new buildOptions in the api CRM-12464

----------------------------------------
* CRM-12464: Add PseudoConstants to Schema Metadata
  http://issues.civicrm.org/jira/browse/CRM-12464
parent 3f3a3ba0
Branches
Tags
No related merge requests found
......@@ -27,7 +27,7 @@
*/
/**
* File for CiviCRM APIv3 pseudoconstants
* CiviCRM APIv3 pseudoconstants - DEPRECATED
*
* @package CiviCRM_APIv3
* @subpackage API_Constant
......@@ -37,8 +37,8 @@
*/
/**
* 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
......
......@@ -204,43 +204,17 @@ function civicrm_api3_generic_replace($apiRequest) {
/**
* 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);
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment