CRM-13261 new apiwrapper hook
authorXavier Dutoit <xavier@tttp.eu>
Thu, 22 Aug 2013 17:16:16 +0000 (19:16 +0200)
committerXavier Dutoit <xavier@tttp.eu>
Thu, 22 Aug 2013 17:16:16 +0000 (19:16 +0200)
CRM/Utils/Hook.php
api/api.php

index 94fe5eeda8cb99968e6681697b179ab2f973f656..c1552bb091f88ce88f1d4c552edc090564db8581 100644 (file)
@@ -1215,6 +1215,20 @@ abstract class CRM_Utils_Hook {
     );
   }
 
+  /**
+   * This hook is called before running an api call.
+   *
+   * @param $wrappers array of implements API_Wrapper(see CRM/Utils/API/ReloadOption.php as an example)
+   *
+   * @return null the return value is ignored
+   * @access public
+   */
+  static function apiWrappers (&$wrappers,$apiRequest) {
+    return self::singleton()->invoke(2, $wrappers, $apiRequest, self::$_nullObject, self::$_nullObject, self::$_nullObject,
+      'civicrm_apiWrapper'
+    );
+  }
+
   /**
    * This hook is called before running pending cron jobs.
    *
index 2564b1898b9593ce151184fece57739bcc471b9f..f42d5ac8da50991408164b80109849b1f177ad77 100644 (file)
  *   array to be passed to function
  */
 function civicrm_api($entity, $action, $params, $extra = NULL) {
+  $apiRequest = array();
+  $apiRequest['entity'] = CRM_Utils_String::munge($entity);
+  $apiRequest['action'] = CRM_Utils_String::munge($action);
+  $apiRequest['version'] = civicrm_get_api_version($params);
+  $apiRequest['params'] = $params;
+  $apiRequest['extra'] = $extra;
+
   $apiWrappers = array(
     CRM_Utils_API_HTMLInputCoder::singleton(),
     CRM_Utils_API_NullOutputCoder::singleton(),
     CRM_Utils_API_ReloadOption::singleton(),
   );
+  CRM_Utils_Hook::apiWrappers($apiWrappers,$apiRequest);
+
   try {
     require_once ('api/v3/utils.php');
     require_once 'api/Exception.php';
@@ -32,12 +41,6 @@ function civicrm_api($entity, $action, $params, $extra = NULL) {
     }
     _civicrm_api3_initialize();
     $errorScope = CRM_Core_TemporaryErrorScope::useException();
-    $apiRequest = array();
-    $apiRequest['entity'] = CRM_Utils_String::munge($entity);
-    $apiRequest['action'] = CRM_Utils_String::munge($action);
-    $apiRequest['version'] = civicrm_get_api_version($params);
-    $apiRequest['params'] = $params;
-    $apiRequest['extra'] = $extra;
     // look up function, file, is_generic
     $apiRequest += _civicrm_api_resolve($apiRequest);
     if (strtolower($action) == 'create' || strtolower($action) == 'delete') {