CRM-16961 fix - 4.6.5 search regression on custom fields where option values have...
authormonishdeb <monish.deb@webaccessglobal.com>
Tue, 4 Aug 2015 14:48:31 +0000 (20:18 +0530)
committermonishdeb <monish.deb@webaccessglobal.com>
Thu, 6 Aug 2015 06:49:17 +0000 (12:19 +0530)
https://issues.civicrm.org/jira/browse/CRM-16961

CRM/Contact/Form/Search/Builder.php
CRM/Core/BAO/CustomField.php
CRM/Core/BAO/CustomQuery.php
CRM/Core/BAO/Mapping.php
templates/CRM/Contact/Form/Search/Builder.js

index 033114b650909341b59a4b97fa1e837b090b1add..7a702587bec0ac79a45208a0aee42cefc0f28207 100644 (file)
@@ -255,12 +255,12 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
                 $inVal = trim($v[2]);
                 //checking for format to avoid db errors
                 if ($type == 'Int') {
-                  if (!preg_match('/^[(]([A-Za-z0-9\,]+)[)]$/', $inVal)) {
+                  if (!preg_match('/^[A-Za-z0-9\,]+$/', $inVal)) {
                     $errorMsg["value[$v[3]][$v[4]]"] = ts("Please enter correct Data (in valid format).");
                   }
                 }
                 else {
-                  if (!(substr($inVal, 0, 1) == '(' && substr($inVal, -1, 1) == ')') && !preg_match('/^[(]([A-Za-z0-9åäöÅÄÖüÜœŒæÆøØ\,\s]+)[)]$/', $inVal)) {
+                  if (!preg_match('/^[A-Za-z0-9åäöÅÄÖüÜœŒæÆøØ()\,\s]+$/', $inVal)) {
                     $errorMsg["value[$v[3]][$v[4]]"] = ts("Please enter correct Data (in valid format).");
                   }
                 }
index dd5529d47049bf8e5875096d650411d41cad9fae..e2dbf50ce40ea9ce5b12410b6d30de9e19b1fa11 100644 (file)
@@ -1233,7 +1233,8 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField {
           if ($html_type == 'CheckBox') {
             $newData = array();
             foreach ($checkedData as $v) {
-              $newData[$v] = 1;
+              $v = str_replace(CRM_Core_DAO::VALUE_SEPARATOR, '', $v);
+              $newData[] = $v;
             }
             $checkedData = $newData;
           }
index 37b00ab57c85fb0d88f882253b63b2af5ce60901..7514a1357339a8f22e7f73cc34f1faf7afc38d9a 100644 (file)
@@ -424,12 +424,12 @@ SELECT label, value
               // CRM-14563,CRM-16575 : Special handling of multi-select custom fields
               if ($isSerialized && !empty($value)) {
                 if (strstr($op, 'IN')) {
-                  $value = str_replace(array('(', ')'), '', str_replace(",", "[[:cntrl:]]|[[:cntrl:]]", $value));
+                  $value = str_replace(",", "[[:cntrl:]]*|[[:cntrl:]]*", $value);
                 }
                 $op = (strstr($op, '!') || strstr($op, 'NOT')) ? 'NOT RLIKE' : 'RLIKE';
-                $value = "[[:cntrl:]]" . $value . "[[:cntrl:]]";
+                $value = "[[:cntrl:]]*" . $value . "[[:cntrl:]]*";
                 if (!$wildcard) {
-                  $value = str_replace("[[:cntrl:]]|", '', $value);
+                  $value = str_replace("[[:cntrl:]]*|", '', $value);
                 }
               }
 
index 607fabf8c8cb594a44a978ead7b28f7c5b9bcf12..17a69245361b8aaada1ae84ecee0cbfd9d55007a 100644 (file)
@@ -1018,8 +1018,6 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping {
           $value = $params['value'][$key][$k];
           if ($fldName == 'group' || $fldName == 'tag') {
             $value = trim($value);
-            $value = str_replace('(', '', $value);
-            $value = str_replace(')', '', $value);
 
             $v = explode(',', $value);
             $value = array();
@@ -1037,8 +1035,8 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping {
           }
 
           // CRM-14983: verify if values are comma separated convert to array
-          if (!is_array($value) && (strpos($value, ',') !== FALSE || strstr($value, '(')) && substr($fldName, 0, 7) != 'custom_' && $params['operator'][$key][$k] == 'IN') {
-            $value = explode(',', trim($value, "(..)"));
+          if (!is_array($value) && strstr($params['operator'][$key][$k], 'IN')) {
+            $value = explode(',', $value);
             $value = array($params['operator'][$key][$k] => $value);
           }
 
index 4a0da51621bafde8f0a448d1086a237cfe661759..af058944f973c029be59289436a7bf56a2310c61 100644 (file)
       .on('change', '.crm-search-value select', function() {
         var value = $(this).val() || '';
         if ($(this).attr('multiple') == 'multiple' && value.length) {
-          value = '(' + value.join(',') + ')';
+          value = value.join(',');
         }
         $(this).siblings('input').val(value);
       })