Merge pull request #17613 from civicrm/5.27
[civicrm-core.git] / api / api.php
index 1a70bc3921cb83182598e84da4c5e23a4d0702b8..be1946db3735796f65dd091d9d3aece9908d98e6 100644 (file)
  *   create, get, delete or some special action name.
  * @param array $params
  *   array to be passed to function
- * @param null $extra
  *
  * @return array|int
  */
-function civicrm_api(string $entity = NULL, string $action, array $params, $extra = NULL) {
-  return \Civi::service('civi_api_kernel')->runSafe($entity, $action, $params, $extra);
+function civicrm_api(string $entity, string $action, array $params) {
+  return \Civi::service('civi_api_kernel')->runSafe($entity, $action, $params);
 }
 
 /**
@@ -61,7 +60,6 @@ function civicrm_api(string $entity = NULL, string $action, array $params, $extr
  * @throws \Civi\API\Exception\NotImplementedException
  */
 function civicrm_api4(string $entity, string $action, array $params = [], $index = NULL) {
-  $apiCall = \Civi\Api4\Utils\ActionUtil::getAction($entity, $action);
   $indexField = $index && is_string($index) && !CRM_Utils_Rule::integer($index) ? $index : NULL;
   $removeIndexField = FALSE;
 
@@ -70,10 +68,7 @@ function civicrm_api4(string $entity, string $action, array $params = [], $index
     $params['select'][] = $indexField;
     $removeIndexField = TRUE;
   }
-  foreach ($params as $name => $param) {
-    $setter = 'set' . ucfirst($name);
-    $apiCall->$setter($param);
-  }
+  $apiCall = \Civi\API\Request::create($entity, $action, ['version' => 4] + $params);
 
   if ($index && is_array($index)) {
     $indexCol = reset($index);
@@ -189,12 +184,7 @@ function _civicrm_api3_api_getfields(&$apiRequest) {
  *   true if error, false otherwise
  */
 function civicrm_error($result) {
-  if (is_array($result)) {
-    return (array_key_exists('is_error', $result) &&
-      $result['is_error']
-    ) ? TRUE : FALSE;
-  }
-  return FALSE;
+  return is_array($result) && !empty($result['is_error']);
 }
 
 /**
@@ -205,7 +195,7 @@ function civicrm_error($result) {
  * @return string|null
  */
 function _civicrm_api_get_camel_name($entity) {
-  return is_string($entity) ? CRM_Utils_String::convertStringToCamel($entity) : NULL;
+  return is_string($entity) ? \Civi\API\Request::normalizeEntityName($entity) : NULL;
 }
 
 /**
@@ -272,7 +262,7 @@ function _civicrm_api_replace_variable($value, $parentResult, $separator) {
       if (array_key_exists($fieldname, $parentResult) && is_array($parentResult[$fieldname])) {
         $arrayLocation = $parentResult[$fieldname];
         foreach ($stringParts as $key => $innerValue) {
-          $arrayLocation = CRM_Utils_Array::value($innerValue, $arrayLocation);
+          $arrayLocation = $arrayLocation[$innerValue] ?? NULL;
         }
         $value = $arrayLocation;
       }
@@ -291,33 +281,25 @@ function _civicrm_api_replace_variable($value, $parentResult, $separator) {
  *
  * @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);
 }
 
 /**
  * Having a DAO object find the entity name.
  *
- * @param object $bao
+ * @param CRM_Core_DAO $bao
  *   DAO being passed in.
  *
  * @return string
  */
 function _civicrm_api_get_entity_name_from_dao($bao) {
-  $daoName = str_replace("BAO", "DAO", get_class($bao));
-  return CRM_Core_DAO_AllCoreTables::getBriefName($daoName);
+  return CRM_Core_DAO_AllCoreTables::getBriefName(get_class($bao));
 }