CRM-14370 - API Kernel - Implement getEntityNames, getActionNames
[civicrm-core.git] / api / v3 / Generic / Getactions.php
index 50c9548afe903292b668739070353f8fb9fa3729..9cfbbd67a95d7235558ccb9459f49d4e3ca550dd 100644 (file)
@@ -2,9 +2,9 @@
 
 /*
  +--------------------------------------------------------------------+
-| CiviCRM version 4.3                                                |
+| CiviCRM version 4.5                                                |
 +--------------------------------------------------------------------+
-| Copyright CiviCRM LLC (c) 2004-2013                                |
+| Copyright CiviCRM LLC (c) 2004-2014                                |
 +--------------------------------------------------------------------+
 | This file is a part of CiviCRM.                                    |
 |                                                                    |
 +--------------------------------------------------------------------+
 */
 
-function civicrm_api3_generic_getActions($params) {
-  civicrm_api3_verify_mandatory($params, NULL, array('entity'));
-  $r = civicrm_api('Entity', 'Get', array('version' => 3));
-  $entity = CRM_Utils_String::munge($params['entity']);
-  if (!in_array($entity, $r['values'])) {
-    return civicrm_api3_create_error("Entity " . $entity . " invalid. Use api.entity.get to have the list", array('entity' => $r['values']));
-  }
-  _civicrm_api_loadEntity($entity);
-
-  $functions     = get_defined_functions();
-  $actions       = array();
-  $prefix        = 'civicrm_api3_' . strtolower($entity) . '_';
-  $prefixGeneric = 'civicrm_api3_generic_';
-  foreach ($functions['user'] as $fct) {
-    if (strpos($fct, $prefix) === 0) {
-      $actions[] = substr($fct, strlen($prefix));
-    }
-    elseif (strpos($fct, $prefixGeneric) === 0) {
-      $actions[] = substr($fct, strlen($prefixGeneric));
-    }
-  }
+function civicrm_api3_generic_getActions($apiRequest) {
+  civicrm_api3_verify_mandatory($apiRequest, NULL, array('entity'));
+  $mfp = \Civi\Core\Container::singleton()->get('magic_function_provider');
+  $actions = $mfp->getActionNames($apiRequest['version'], $apiRequest['entity']);
   return civicrm_api3_create_success($actions);
 }