Fix regression on refreshing group_contact cache before checking acls
authoreileen <emcnaughton@wikimedia.org>
Thu, 14 Feb 2019 05:37:14 +0000 (18:37 +1300)
committereileen <emcnaughton@wikimedia.org>
Thu, 14 Feb 2019 20:18:48 +0000 (09:18 +1300)
We seem to be checking if the cache needs a rebuild and IF SO doing 2 actions
1) rebuilding it
2) permitting access to contacts related to it

When really it should do only 1) above - this patch changes as such

This seems to be whackamole off https://github.com/civicrm/civicrm-core/pull/12344
going too far one way & https://github.com/civicrm/civicrm-core/pull/13448
fixing but adding this new variant

CRM/ACL/BAO/ACL.php

index f74f1c6026b21813dea04ae216924cf5341921c7..8e6d14ffb10d75de3a74ad60652b11dd308ff96d 100644 (file)
@@ -782,10 +782,10 @@ SELECT g.*
         while ($dao->fetch()) {
           $groupIDs[] = $dao->id;
 
-          if (($dao->saved_search_id || $dao->children || $dao->parents) &&
-            $dao->cache_date == NULL
-          ) {
-            CRM_Contact_BAO_GroupContactCache::load($dao);
+          if (($dao->saved_search_id || $dao->children || $dao->parents)) {
+            if ($dao->cache_date == NULL) {
+              CRM_Contact_BAO_GroupContactCache::load($dao);
+            }
             $groupContactCacheClause = " UNION SELECT contact_id FROM civicrm_group_contact_cache WHERE group_id IN (" . implode(', ', $groupIDs) . ")";
           }