CRM-18694 alternative solution to easier post code searching.
authoreileen <emcnaughton@wikimedia.org>
Thu, 23 Jun 2016 03:17:50 +0000 (15:17 +1200)
committereileen <emcnaughton@wikimedia.org>
Tue, 12 Jul 2016 08:01:47 +0000 (20:01 +1200)
The proposal is to change it to regex but the comments suggest the primary reason for this is that it makes more sense to search from the start of the string. This being the case it seems that we could opt to use an indexed query rather than regex

CRM/Contact/Page/AJAX.php

index 2da17695ead4a14f2a754689d2e2c06307680490..f6e17e8eb40b4d76d585e5270dd8eb11b0f3cb37 100644 (file)
@@ -688,7 +688,9 @@ LIMIT {$offset}, {$rowCount}
 
     foreach ($mappings as $key => $dbName) {
       if (!empty($searchParams[$key])) {
-        $queryParams[$nextParamKey] = array('%' . $searchParams[$key] . '%', 'String');
+        // CRM-18694.
+        $wildcard = strstr($key, 'postcode') ? '' : '%';
+        $queryParams[$nextParamKey] = array($wildcard . $searchParams[$key] . '%', 'String');
         $where[] = $dbName . " LIKE %{$nextParamKey} ";
         $nextParamKey++;
       }