Proposed fix for searching similar multi select values CRM-16575
[civicrm-core.git] / CRM / Core / BAO / CustomQuery.php
index 512b7595c4d85899d70025da6a330e9981648dce..717c50fe37bceb118f2fbe960ce41a4764cf3470 100644 (file)
@@ -400,9 +400,20 @@ SELECT label, value
             else {
               $val = CRM_Utils_Type::escape($strtolower(trim($value)), 'String');
 
-              if ($wildcard) {
-                $val = $strtolower(CRM_Core_DAO::escapeString($val));
-                $val = "%$val%";
+              $specialHTMLType = array(
+                'CheckBox',
+                'Multi-Select',
+                'AdvMulti-Select',
+                'Multi-Select State/Province',
+                'Multi-Select Country',
+              );
+               
+              if (in_array($field['html_type'], $specialHTMLType)) {
+                $val = "[[:cntrl:]]".$val."[[:cntrl:]]";
+                $op  = 'RLIKE';
+
+              } elseif ($wildcard) {
+                               $val = "[[:cntrl:]]%$val%[[:cntrl:]]";
                 $op = 'LIKE';
               }