* @param array $params
* array to be passed to function
*
- * @return array|int
+ * @return array|int|Civi\Api4\Generic\Result
*/
function civicrm_api(string $entity, string $action, array $params) {
return \Civi::service('civi_api_kernel')->runSafe($entity, $action, $params);
$indexField = $index && is_string($index) && !CRM_Utils_Rule::integer($index) ? $index : NULL;
$removeIndexField = FALSE;
- // If index field is not part of the select query, we add it here and remove it below
- if ($indexField && !empty($params['select']) && is_array($params['select']) && !\Civi\Api4\Utils\SelectUtil::isFieldSelected($indexField, $params['select'])) {
+ // If index field is not part of the select query, we add it here and remove it below (except for oddball "Setting" api)
+ if ($indexField && !empty($params['select']) && is_array($params['select']) && $entity !== 'Setting' && !\Civi\Api4\Utils\SelectUtil::isFieldSelected($indexField, $params['select'])) {
$params['select'][] = $indexField;
$removeIndexField = TRUE;
}
if ($index && is_array($index)) {
$indexCol = reset($index);
$indexField = key($index);
- if (property_exists($apiCall, 'select')) {
+ // Index array indicates only 1 or 2 fields need to be selected (except for oddball "Setting" api)
+ if ($entity !== 'Setting' && property_exists($apiCall, 'select')) {
$apiCall->setSelect([$indexCol]);
if ($indexField && $indexField != $indexCol) {
$apiCall->addSelect($indexField);
*
* @return string
* Entity name in underscore separated format.
+ *
+ * @deprecated
*/
function _civicrm_api_get_entity_name_from_camel($entity) {
- if (!$entity || $entity === strtolower($entity)) {
- return $entity;
- }
- elseif ($entity == 'PCP') {
- return 'pcp';
- }
- else {
- $entity = ltrim(strtolower(str_replace('U_F',
- 'uf',
- // That's CamelCase, beside an odd UFCamel that is expected as uf_camel
- preg_replace('/(?=[A-Z])/', '_$0', $entity)
- )), '_');
+ if (!$entity) {
+ // @todo - this should not be called when empty.
+ return '';
}
- return $entity;
+ return CRM_Core_DAO_AllCoreTables::convertEntityNameToLower($entity);
}
/**