Call getSearchSQLParts to get the desired part instead of sql wrangling
authoreileen <emcnaughton@wikimedia.org>
Tue, 5 Mar 2019 00:05:16 +0000 (13:05 +1300)
committereileen <emcnaughton@wikimedia.org>
Tue, 5 Mar 2019 00:05:16 +0000 (13:05 +1300)
CRM/Campaign/Selector/Search.php
CRM/Contact/BAO/GroupContactCache.php

index ec046e6ab3602c95f9faf9f88610cedf0192b117..f3315a0b00455451b3be10e7156d25957c49a38d 100644 (file)
@@ -273,17 +273,17 @@ class CRM_Campaign_Selector_Search extends CRM_Core_Selector_Base implements CRM
       $cacheKey = "civicrm search {$this->_key}";
       Civi::service('prevnext')->deleteItem(NULL, $cacheKey, 'civicrm_contact');
 
-      $sql = $this->_query->getSearchSQL(0, 0, $sort,
+      $sql = $this->_query->getSearchSQLParts(0, 0, $sort,
         FALSE, FALSE,
         FALSE, FALSE,
         $this->_campaignWhereClause,
         NULL,
         $this->_campaignFromClause
       );
-      list($select, $from) = explode(' FROM ', $sql);
+
       $selectSQL = "
       SELECT %1, contact_a.id, contact_a.display_name
-FROM {$from}
+FROM {$sql['from']}
 ";
 
       try {
index e61291cd86061bb31cd0d5a81eb40e24d5c798bb..5bad91bed006d40575d0f0a2e607b71387e44e8e 100644 (file)
@@ -555,15 +555,12 @@ WHERE  id IN ( $groupIDs )
           );
         $query->_useDistinct = FALSE;
         $query->_useGroupBy = FALSE;
-        $searchSQL
-          = $query->searchQuery(
+        $sqlParts = $query->getSearchSQLParts(
             0, 0, NULL,
             FALSE, FALSE,
-            FALSE, TRUE,
-            TRUE,
-            NULL, NULL, NULL,
-            TRUE
+            FALSE, TRUE
           );
+        $searchSQL = "{$sqlParts['select']} {$sqlParts['from']} {$sqlParts['where']} {$sqlParts['having']} {$sqlParts['group_by']}";
       }
       $groupID = CRM_Utils_Type::escape($groupID, 'Integer');
       $sql = $searchSQL . " AND contact_a.id NOT IN (