CRM-17518 fix - "IN" operator doesn't work on the contact_sub_type field for api...
authormonishdeb <monish.deb@webaccessglobal.com>
Fri, 6 Nov 2015 06:24:50 +0000 (11:54 +0530)
committermonishdeb <monish.deb@webaccessglobal.com>
Fri, 6 Nov 2015 06:24:50 +0000 (11:54 +0530)
https://issues.civicrm.org/jira/browse/CRM-17518

CRM/Contact/BAO/Query.php

index 756a633c5fc0e808fd52826d94c83206cc718a5f..de7b0f9ca8f861f82d299aee7c6abdab6c58b5ce 100644 (file)
@@ -2818,6 +2818,11 @@ class CRM_Contact_BAO_Query {
    */
   public function includeContactSubTypes($value, $grouping, $op = 'LIKE') {
 
+    if (is_array($value) && in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
+      $op = key($value);
+      $value = $value[$op];
+    }
+
     $clause = array();
     $alias = "contact_a.contact_sub_type";
     $qillOperators = CRM_Core_SelectValues::getSearchBuilderOperators();
@@ -2832,7 +2837,7 @@ class CRM_Contact_BAO_Query {
     elseif (is_array($value)) {
       foreach ($value as $k => $v) {
         if (!empty($k)) {
-          $clause[$k] = "($alias $op '%" . CRM_Core_DAO::VALUE_SEPARATOR . CRM_Utils_Type::escape($k, 'String') . CRM_Core_DAO::VALUE_SEPARATOR . "%')";
+          $clause[$k] = "($alias $op '%" . CRM_Core_DAO::VALUE_SEPARATOR . CRM_Utils_Type::escape($v, 'String') . CRM_Core_DAO::VALUE_SEPARATOR . "%')";
         }
       }
     }