CRM-15862 - Improve entityRef defaults and support relationship_type
authorColeman Watts <coleman@civicrm.org>
Fri, 23 Jan 2015 14:54:41 +0000 (09:54 -0500)
committerColeman Watts <coleman@civicrm.org>
Fri, 23 Jan 2015 14:54:41 +0000 (09:54 -0500)
api/v3/Generic/Getlist.php
api/v3/RelationshipType.php

index 5af1f8de6167475a8ee08b4e2fca335396f6c479..8676ee6e9816d65fc31091413efc5bb08d39f4c1 100644 (file)
@@ -34,7 +34,10 @@ function civicrm_api3_generic_getList($apiRequest) {
   $entity = _civicrm_api_get_entity_name_from_camel($apiRequest['entity']);
   $request = $apiRequest['params'];
 
-  _civicrm_api3_generic_getList_defaults($entity, $request);
+  // Hey api, would you like to provide default values?
+  $fnName = "_civicrm_api3_{$entity}_getlist_defaults";
+  $defaults = function_exists($fnName) ? $fnName($request) : array();
+  _civicrm_api3_generic_getList_defaults($entity, $request, $defaults);
 
   // Hey api, would you like to format the search params?
   $fnName = "_civicrm_api3_{$entity}_getlist_params";
@@ -67,8 +70,9 @@ function civicrm_api3_generic_getList($apiRequest) {
  *
  * @param string $entity
  * @param array $request
+ * @param array $apiDefaults
  */
-function _civicrm_api3_generic_getList_defaults($entity, &$request) {
+function _civicrm_api3_generic_getList_defaults($entity, &$request, $apiDefaults) {
   $config = CRM_Core_Config::singleton();
   $fields = _civicrm_api_get_fields($entity);
   $defaults = array(
@@ -94,7 +98,7 @@ function _civicrm_api3_generic_getList_defaults($entity, &$request) {
     }
   }
   $resultsPerPage = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'search_autocomplete_count', NULL, 10);
-  $request += $defaults;
+  $request += $apiDefaults + $defaults;
   // Default api params
   $params = array(
     'options' => array(
index d7b1eb516e6a39710fefa87bcc9463644e8e4136..dc8da5a358f0b96a881b07e6eeaeba79ab835704 100644 (file)
@@ -112,3 +112,16 @@ function civicrm_api3_relationship_type_get($params) {
 function civicrm_api3_relationship_type_delete($params) {
   return _civicrm_api3_basic_delete(_civicrm_api3_get_BAO(__FUNCTION__), $params);
 }
+
+/**
+ * @see _civicrm_api3_generic_getlist_defaults
+ *
+ * @param array $request
+ * @return array
+ */
+function _civicrm_api3_relationship_type_getlist_defaults($request) {
+  return array(
+    'label_field' => 'label_a_b',
+    'search_field' => 'label_a_b',
+  );
+}
\ No newline at end of file