Fix ACL edge case
authorAidan Saunders <aidan.saunders@squiffle.uk>
Fri, 29 Sep 2023 15:03:31 +0000 (16:03 +0100)
committerAidan Saunders <aidan.saunders@squiffle.uk>
Fri, 29 Sep 2023 20:13:48 +0000 (21:13 +0100)
CRM/ACL/BAO/ACL.php

index dd39cce679044acdf7af6c3515f87e85c8451bf8..944faaf3de8b7aeb4803b7f40829aed2d0df196a 100644 (file)
@@ -513,7 +513,7 @@ SELECT g.*
 ";
     $dao = CRM_Core_DAO::executeQuery($query);
     $foundGroupIDs = [];
-    $groupContactCacheClause = FALSE;
+    $groupContactCacheClause = '';
     while ($dao->fetch()) {
       $foundGroupIDs[] = $dao->id;
       if (($dao->saved_search_id || $dao->children || $dao->parents)) {
@@ -524,7 +524,7 @@ SELECT g.*
       }
     }
 
-    if ($groupIDs) {
+    if ($foundGroupIDs) {
       return "(
         `contact_a`.id $operation (
          SELECT contact_id FROM civicrm_group_contact WHERE group_id IN (" . implode(', ', $foundGroupIDs) . ") AND status = 'Added'
@@ -532,7 +532,12 @@ SELECT g.*
          )
       )";
     }
-    return '';
+    else {
+      // Edge case avoiding SQL syntax error if no $foundGroupIDs
+      return "(
+        `contact_a`.id $operation (0)
+      )";
+    }
   }
 
   public static function getObjectTableOptions(): array {