CRM-14584 - Core Advanced Search - fix incorrect boolean logic on privacy preferences...
authorJon goldberg - Linux laptop <jon@palantetech.coop>
Sat, 16 Aug 2014 20:24:01 +0000 (16:24 -0400)
committerJon goldberg - Linux laptop <jon@palantetech.coop>
Sat, 16 Aug 2014 20:24:01 +0000 (16:24 -0400)
CRM/Contact/BAO/Query.php

index 0c7df5514f0a27a21a0cdf7e8595a49f052c1488..a636a96041370d0de73340e3da0157679de15b44 100644 (file)
@@ -3943,24 +3943,24 @@ WHERE  id IN ( $groupIDs )
     }
 
     $toggleValues = $this->getWhereValues('privacy_toggle', $grouping);
-    $compareOP = '!=';
+    $compareOP = '!';
     if ($toggleValues &&
       $toggleValues[2] == 2
     ) {
-      $compareOP = '=';
+      $compareOP = '';
     }
 
     $clauses = array();
     $qill = array();
     foreach ($value as $dontCare => $pOption) {
-      $clauses[] = " ( contact_a.{$pOption} $compareOP 1 ) ";
+      $clauses[] = " ( contact_a.{$pOption} = 1 ) ";
       $field = CRM_Utils_Array::value($pOption, $this->_fields);
       $title = $field ? $field['title'] : $pOption;
-      $qill[] = " $title $compareOP 1 ";
+      $qill[] = " $title = 1 ";
     }
 
-    $this->_where[$grouping][] = '( ' . implode($operator, $clauses) . ' )';
-    $this->_qill[$grouping][] = implode($operator, $qill);
+    $this->_where[$grouping][] = $compareOP . '( ' . implode($operator, $clauses) . ' )';
+    $this->_qill[$grouping][] = $compareOP . '( ' . implode($operator, $qill) . ' )';
   }
 
   /**