CRM-20540 - Add widcard setting to entityRef fields
authorColeman Watts <coleman@civicrm.org>
Wed, 10 May 2017 20:35:25 +0000 (15:35 -0500)
committerColeman Watts <coleman@civicrm.org>
Wed, 10 May 2017 20:35:25 +0000 (15:35 -0500)
api/v3/Contact.php
api/v3/Generic/Getlist.php

index 5765fd7d9f0eb2b8a0a820e4ef98973f2cf0eb86..8b2711cd1ede270650bab5d63ffd1ad810a22230 100644 (file)
@@ -1254,6 +1254,11 @@ function _civicrm_api3_contact_getlist_params(&$request) {
   // Contact api doesn't support array(LIKE => 'foo') syntax
   if (!empty($request['input'])) {
     $request['params'][$request['search_field']] = $request['input'];
+    // Temporarily override wildcard setting
+    if (Civi::settings()->get('includeWildCardInName') != $request['add_wildcard']) {
+      Civi::$statics['civicrm_api3_contact_getlist']['override_wildcard'] = !$request['add_wildcard'];
+      Civi::settings()->set('includeWildCardInName', $request['add_wildcard']);
+    }
   }
 }
 
@@ -1306,6 +1311,11 @@ function _civicrm_api3_contact_getlist_output($result, $request) {
       $output[] = $data;
     }
   }
+  // Restore wildcard override by _civicrm_api3_contact_getlist_params
+  if (isset(Civi::$statics['civicrm_api3_contact_getlist']['override_wildcard'])) {
+    Civi::settings()->set('includeWildCardInName', Civi::$statics['civicrm_api3_contact_getlist']['override_wildcard']);
+    unset(Civi::$statics['civicrm_api3_contact_getlist']['override_wildcard']);
+  }
   return $output;
 }
 
index e151d1787b11b5078caa992ad863112fd6d8f538..124dc9eb1147786daf0913708dd58f239c7a27d6 100644 (file)
@@ -83,7 +83,6 @@ function civicrm_api3_generic_getList($apiRequest) {
  * @param array $fields
  */
 function _civicrm_api3_generic_getList_defaults($entity, &$request, $apiDefaults, $fields) {
-  $config = CRM_Core_Config::singleton();
   $defaults = array(
     'page_num' => 1,
     'input' => '',
@@ -91,6 +90,7 @@ function _civicrm_api3_generic_getList_defaults($entity, &$request, $apiDefaults
     'color_field' => isset($fields['color']) ? 'color' : NULL,
     'id_field' => $entity == 'option_value' ? 'value' : 'id',
     'description_field' => array(),
+    'add_wildcard' => Civi::settings()->get('includeWildCardInName'),
     'params' => array(),
     'extra' => array(),
   );
@@ -119,7 +119,7 @@ function _civicrm_api3_generic_getList_defaults($entity, &$request, $apiDefaults
   );
   // When searching e.g. autocomplete
   if ($request['input']) {
-    $params[$request['search_field']] = array('LIKE' => ($config->includeWildCardInName ? '%' : '') . $request['input'] . '%');
+    $params[$request['search_field']] = array('LIKE' => ($request['add_wildcard'] ? '%' : '') . $request['input'] . '%');
   }
   // When looking up a field e.g. displaying existing record
   if (!empty($request['id'])) {